请问问什么,键入数据后就停在了这个界面,程序不再自动运行判断?

请问问什么,键入数据后就停在了这个界面,程序不再自动运行判断?

问题描述:

编写一个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 + "是回文数");
        }