中易网

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

答案:4  悬赏:50  
解决时间 2021-03-23 23:26
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 出错 不添加 程序运行又不正确 不能判定超过范围的数字 为什么
最佳答案



if(number>0&&number<=99999);你这里多了一个分号“;” 去掉这个分号就能运行了
全部回答
else {System.out.printf("\n%d在1至99999之间",number); } 注意这里面的“printf”应该改成“print”,你多了一个f,不要被C语言混淆
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); } } } 这是正确的代码,这括号实在太繁琐了。。。。你就自己对对吧,这只要细心一点,都没什么难的
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.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求推荐好看的帝道玄幻类的小说
西游记夺宝莲花洞是谁啊
小孩晚上睡觉磨牙是怎么会事
牛家客栈怎么去啊,我要去那办事
哪种洗发水更适合溢脂性脱发
超宇宙2 v1.07新变身技能mod v1.91怎么用
黑色车米色内饰,配什么颜色的座椅
男人法令纹怎么去除?有好方法吗?
加工过程能力分析中的CPK计算到底是直接用样
北京莱维卡尔珠宝有限公司是真的还是假的,谁
双连拱隧道二衬混凝土浇注如何振捣
我到底要不要去当兵呢?
惠安有旧货市场吗?
为什么广东这边有个说法:阴历7月14日是鬼节
雅诗阁旗下的重庆盛捷解放碑服务公寓的地址在
推荐资讯
寻找一部今古传奇武侠版上的武侠小说
作为巴比馒头的加盟店,开业后,他们还会提供
跪求!文曲星模拟器!可以在电脑上玩英雄坛说
主人召唤卡洛儿的口诀是什么
弥猴桃和柠檬加凉开水加多少白醋合适,能祛斑
哈佛h613款和14款运动版有何区别
为何物质能发射紫外线
真正去黑头!!
张杰怎么现在这么瘦了,记得以前很有肉的
网剧逆袭未删减版全集资源,求大神百度资源一
周末去合肥买空调,哪里比较便宜?
入驻天猫时被驳回,说注册商标里没有某一项,
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?