java程序 判定数字几位 和回文数

import javax.swing.JOptionPane;
public class Number
{
public static void main(String args[])

{ int number=0,d5,d4,d3,d2,d1;
String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");
number=Integer.parseInt(str);
if(number>0&&number<=99999);
{
d5=number/10000;
d4=number%10000/1000;
d3=number%1000/100;
d2=number%100/10;
d1=number%10;
if(d5>0&&d5<=9)
{System.out.println(number+"是5位数");
if(d4==d2&&d5==d1)
{System.out.println(number+"是回文数");
}
else
{System.out.println(number+"不是回文数");
}
}
else if(d5==0&&d4>0)
{System.out.println(number+"是4位数");
if(d4==d1&&d3==d2)
{System.out.println(number+"是回文数");
}
else
{System.out.println(number+"不是回文数");
}
}
else if(d5==0&&d4==0&&d3>0)
{System.out.println(number+"是3位数");
if(d3==d1)
{System.out.println(number+"是回文数");
}
else
{System.out.println(number+"不是回文数");
}
}
else if(d2!=0)
{System.out.println(number+"是2位数");
if(d2==d1)
{System.out.println(number+"是回文数");
}
else
{System.out.println(number+"不是回文数");
}
}
else if(d1!=0)
{System.out.println(number+"是1位数");

System.out.println(number+"是回文数");
}

}
else
{System.out.printf("\n%d在1至99999之间",number);
}

}

}

请问最后一个else 添加了 显示else 出错 不添加 程序运行又不正确 不能判定超过范围的数字 为什么

1)先说为什么出错:
else都是和离它最近的if匹配的,你添加的那个else和哪个if匹配呢?要想让语法正确,只能这么写
else if(d1!=0){
System.out.println(number+"是1位数");
System.out.println(number+"是回文数");
}else{
System.out.print("\n%d在1至99999之间",number);
}
这样虽然语法正确,但还是不能判断,因为进入这个分支的条件是d1=0

2)要想程序正确,
if(number>99999){
System.out.print("\n%d在1至99999之间",number);
}
这个分支要放到开始
就是这样
if(number>99999){
System.out.print("\n%d在1至99999之间",number);
}else if(d5>0&&d5<=9){
.....
}

总结:用if--else的时候要注意判断的条件,像这个问题,不管你后面怎么判断,都不能判断超过范围
的数字,原因就在于,你是先判断(d5>0&&d5<=9)然后才进入到这个if中,超过范围的就
不会进入到这个if.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-14
else
{System.out.printf("\n%d在1至99999之间",number);
}

注意这里面的“printf”应该改成“print”,你多了一个f,不要被C语言混淆
第2个回答  2011-11-14
if(number>0&&number<=99999);你这里多了一个分号“;” 去掉这个分号就能运行了本回答被提问者采纳
相似回答