package sy5; import java.util.InputMismatchException; import java.util.Scanner; public class sy5_1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num1=0,num2=0; boolean input=false; while (!input){ try { System.out.print("输入第一个整数:"); num1=sc.nextInt(); input=true; }catch(InputMismatchException e) { System.out.println("重新输入一个整数"); } } input=false; while(!input) { try { System.out.print("输入第二个整数"); num2=sc.nextInt(); input=true; }catch(InputMismatchException e) { System.out.println("重新输入一个整数"); } } int sum=num1+num2; System.out.print(num1+"+"+num2+"="+sum); } }代码问题
时间: 2024-01-07 17:03:18 浏览: 35
这段代码的问题在于:
1. 在第一个while循环中,如果输入的不是整数,程序会一直提示重新输入,但是却没有清空输入缓存,因此会导致死循环。
2. 在第二个while循环中,输入的语句缺少了一个空格。
3. 在最后输出结果时,缺少了换行符。
可以改成这样:
```java
package sy5;
import java.util.InputMismatchException;
import java.util.Scanner;
public class sy5_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = 0, num2 = 0;
boolean input = false;
while (!input) {
try {
System.out.print("输入第一个整数:");
num1 = sc.nextInt();
input = true;
} catch (InputMismatchException e) {
System.out.println("重新输入一个整数");
sc.next(); // 清空输入缓存
}
}
input = false;
while (!input) {
try {
System.out.print("输入第二个整数:"); // 添加一个空格
num2 = sc.nextInt();
input = true;
} catch (InputMismatchException e) {
System.out.println("重新输入一个整数");
sc.next(); // 清空输入缓存
}
}
int sum = num1 + num2;
System.out.println(num1 + "+" + num2 + "=" + sum); // 添加一个换行符
}
}
```