该算法应将3个整数带入ArrayList。如果输入的不是整数,则将出现提示。当我执行代码时,该catch
子句会执行,但是程序会陷入无限循环。有人可以指导我朝正确的方向前进,我感谢您的帮助。:-D
package chapter_08;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class IntegerList {
static List<Integer> numbers = new ArrayList<Integer>();
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int counter = 1;
int inputNum;
do {
System.out.print("Type " + counter + " integer: " );
try {
inputNum = input.nextInt();
numbers.add(inputNum);
counter += 1;
}
catch (Exception exc) {
System.out.println("invalid number");
}
} while (!(numbers.size() == 3));
}
}
这是因为当使用下一个int读取nextInt()
并且失败时,Scanner
仍然包含键入的内容。然后,当重新进入do-
while循环时,input.nextInt()
尝试再次使用相同的内容对其进行解析。
您需要使用以下Scanner
内容“冲洗” 内容nextLine()
:
catch (Exception exc) {
input.nextLine();
System.out.println("invalid number");
}
笔记:
counter
变量,因为您没有使用它。否则,你可以更换counter += 1
的counter++
。while (!(numbers.size() == 3))
使用while (numbers.size() != 3)
,甚至更好:while (numbers.size() < 3)
。Exception
应替换为InputMismatchException
。我是并发新手,我试图为do-time循环实现执行器服务并发。但是我总是遇到 以下是我的示例代码: 但这似乎是不正确的。我想我在错误的地方调用了关闭。有人能帮我在do-time循环中正确实现
我想写一个程序,把每4位数字的每一位相加。例如,我从1000开始,加上1001,千变成2,百变成0,十变成0,单位变成1。这将持续增加每个数字,直到达到9999。这是我的代码,它只输出9999。
与while循环顶部测试循环条件的for和while循环不同, do...while循环do...while循环底部检查其条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Perl中do...while循环的语法是 - do { statement(s); }while( condition ); 应该注意的是
与while循环顶部测试循环条件的for和while循环不同,Objective-C编程语言中的do...while循环检查循环底部的条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Objective-C编程语言中do...while循环的语法是 - do { statement(s); } while( co
Pascal中的while-do循环语句允许重复计算,直到满足某些测试条件。 换句话说,只要给定条件为真,它就会重复执行目标语句。 语法 (Syntax) while-do循环的语法是 - while (condition) do S; 其中, condition是布尔值或关系表达式,其值为true或false, S是BEGIN ... END块中的简单语句或语句组。 例如, while num
do-while语句用于模拟其他编程语言中存在的简单while循环。 语法 (Syntax) do-while语句的语法如下 - do while (condition) statement #1 statement #2 ... end 通过首先计算条件表达式(布尔值)来执行while语句,如果结果为true,则执行while循环中的语句。 从while语句中的条件