请问问什么,键入数据后就停在了这个界面,程序不再自动运行判断?
问题描述:
编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。
import java.util.*;
public class Number{
public static void main(String args[ ]){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个1——9999之间的数:");
int number=scanner.nextInt();
int i=1,temp=0,ti=number;
while((ti=ti/10)!=0){
++i;
}
int t=number;
while(t!=0){
t=t%10;
temp=temp*10+t;
}
if(number==temp){
System.out.println(number+"是"+i+"位数,且是回文数!");
}
else
System.out.println(number+"是"+i+"位数,且不是回文数!");
}
}
在键入数据后程序就停在了这个界面,没办法再运行了,没办法执行下去
答
while(t!=0){
t=t%10;
temp=temp*10+t;
}
假设t=1
t=1%10还是1
以此类推
是死循环
至于正确的代码,这个问题的代码网上很多,自己google去
答
第一个while循环没有跳出;小于十不进去,大于十出不来
建议逻辑理理再写
答
不建议用那么多while循环,可以参考下for循环实现:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个1——9999之间的数:");
int number = scanner.nextInt();
String input = number + "";
StringBuilder stringBuilder = new StringBuilder(input);
stringBuilder.reverse();
int count = 0;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) != stringBuilder.charAt(i)) {
System.out.println(input + "不是回文数");
break;
} else {
count++;
}
}
if (count == input.length()) {
System.out.println(input + "是回文数");
}