Java 用户输入的循环永无止境
我是java新手,刚刚学会了如何使用用户输入。我有一个for循环,通过用户输入10次来请求一个数字。如果数字无效,则应打印“无效数字”,且不计入递增for循环。相反,它总是循环说“无效数字”Java 用户输入的循环永无止境,java,for-loop,input,Java,For Loop,Input,我是java新手,刚刚学会了如何使用用户输入。我有一个for循环,通过用户输入10次来请求一个数字。如果数字无效,则应打印“无效数字”,且不计入递增for循环。相反,它总是循环说“无效数字” import java.util.Scanner; public class Main { public static void main(String[] args) { int sum = 0; Scanner scanner = new Scanner(Sy
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int sum = 0;
Scanner scanner = new Scanner(System.in);
for(int i = 1; i<=10; i++){
System.out.println("Enter number #" + i + " ");
boolean validInt = scanner.hasNextInt();
if(validInt){
int num = scanner.nextInt();
sum += num;
} else{
System.out.println("Invalid Number");
i--;
}
}
System.out.println("Sum was " + sum);
scanner.close();
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
整数和=0;
扫描仪=新的扫描仪(System.in);
对于(inti=1;i我需要添加一个
scanner.nextLine();
在if和else语句之后,在这两种情况下清除扫描仪。问题是您在两个位置更新迭代器i
更好的方法是根据条件进行更新
我还建议您使用包装器类进行安全的整数转换,并像在以下代码中那样正确处理异常:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int sum = 0;
Scanner scanner = new Scanner(System.in);
for(int i = 1; i<=10; ){
System.out.println("Enter number #" + i + " ");
String input = scanner.nextLine();
try{
int num = Integer.parseInt(input);
sum += num;
i++; // If input is a valid integer, then only update i
}catch(NumberFormatException e){
System.out.println("Invalid Number");
}
}
System.out.println("Sum was " + sum);
scanner.close();
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
整数和=0;
扫描仪=新的扫描仪(System.in);
对于(inti=1;i我认为您还可以直接在while循环中使用hasNextInt()调整代码
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
sum += num;
}
请检查我的答案是否解决了你的问题,并接受它作为唯一的灵感来源