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 出错 不添加 程序运行又不正确 不能判定超过范围的数字 为什么
java程序 判定数字几位 和回文数
答案:4 悬赏:50
解决时间 2021-03-23 23:26
- 提问者网友:离殇似水流年飞逝
- 2021-03-23 11:54
最佳答案
- 二级知识专家网友:星痕之殇
- 2021-03-23 12:04
if(number>0&&number<=99999);你这里多了一个分号“;” 去掉这个分号就能运行了
全部回答
- 1楼网友:一起来看看吧
- 2021-03-23 12:46
else
{System.out.printf("\n%d在1至99999之间",number);
}
注意这里面的“printf”应该改成“print”,你多了一个f,不要被C语言混淆
- 2楼网友:年轻没有失败
- 2021-03-23 12:29
import java.util.scanner;
public class number {
public static void main(string args[]) {
int number=0,d5,d4,d3,d2,dl;
scanner reader = new scanner(system.in);
system.out.println("输入一个1至99999之间的数");
number = reader.nextint();
if (number>=1&&number<=99999){
d5=number/10000;
d4=(number-d5*10000)/1000;
d3=number%1000/100;
d2=number%100/10;
dl=number%10;
if(d5!=0)
{
system.out.println(number+"是5位数");
if(d5==dl&&d4==d2)
{
system.out.println(number+"是回文数");
}else{
system.out.println(number+"不是回文数");
}
}else{
if(d4!=0){
system.out.println(number+"是4位数");
if(d4==dl&&d2==d3)
{
system.out.println(number+"是回文数");
}else{
system.out.println(number+"不是回文数");
}
}else{
if(d3!=0){
system.out.println(number+"是3位数");
if(d3==dl){
system.out.println(number+"是回文数");
}else{
system.out.println(number+"不是回文数");
}
}else{
if(d2!=0){
system.out.println(number+"是2位数");
if(dl==d2){
system.out.println(number+"是回文数");
}else{
system.out.println(number+"不是回文数");
}
}else if(dl!=0) {
system.out.println(number+"是1位数");
system.out.println(number+"是回文数");
}
}
}
}
}else{
system.out.printf("\n%d不在1至99999之间",number);
}
}
}
这是正确的代码,这括号实在太繁琐了。。。。你就自己对对吧,这只要细心一点,都没什么难的
- 3楼网友:伤口狠精致
- 2021-03-23 12:21
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.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯