【发布时间】:2025-10-24 16:35:02
【问题描述】:
我有一个程序旨在接受用户的输入(一个两位整数)并输出它的倒数。虽然它编译没有错误,但它只输出第一个整数而不输出第二个。
程序代码:
//Set variable
int reversed = 0;
int requiredLength = 2;
//Get User Input
Scanner sc = new Scanner(System.in);
System.out.println("Enter a two-digit number:");
while (sc.hasNext()) {
//Conditional for User Input
if (sc.hasNextInt()) {
//Set scanner variables
int num = sc.nextInt();
int numLength = String.valueOf(num).length();
if (numLength == requiredLength) {
//Reverse integer
int digit = num % 10;
reversed = reversed * 10 + digit;
num /= 10;
System.out.println("Reversed Number: " + reversed);
break;
} else {
//Error message
System.out.println("Error: Input integer with two-digits");
System.out.print("Please, enter a two-digit number:\n");
}//End of conditional
} else {
//Error message
System.out.println("Error: Input not an integer");
System.out.print("Please, enter a two-digit number:\n");
sc.next();
}//End of conditional
}//End of while loop
首选输出:
Please enter a two-digit number:
45
Reversed: 54
实际输出
Enter a two-digit number:
45
Reversed: 5
怎么了?
【问题讨论】:
-
你不需要一个循环来继续计算数字反转直到你
0(或什么?)。以Java Program to Reverse a Number 为例 -
如果您只需要对两个字符执行此操作,那么通过将 int 转换为字符串然后使用 charAt(x) 像这样更简单的解决方案呢:
String converted = num + ""; System.out.println("Reversed Number: " + converted.charAt(1) + converted.charAt(0));否则,您应该使用如上所述的循环。 -
你的代码是对的,你只是忘了在那里写一个循环。看看我在下面发布的解决方案。
标签: java loops if-statement integer java.util.scanner