我正在制作一个小程序。我需要从用户那里获得一些整数并打印出来。我还需要确定输入是否有效。这是我的代码:
List<Integer> tokens = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
tokens.add(sc.nextInt());
System.out.println(sc.nextInt());
}
我的第一个问题是如何识别输入的类型并将此信息存储在变量中。 我的第二个问题是我在运行代码时进入无限循环。输入输入后,程序将打印所有输入,然后再次等待输入。我该如何解决这个问题? 我非常感谢你的帮助。
答案 0 :(得分:1)
这可能会对您有所帮助:
sc.nextInt()
2次而不检查下一个值? -1
之类的无效数字来打破循环。 示例代码:
List<Integer> tokens = new ArrayList<Integer>();
try (Scanner sc = new Scanner(System.in)) {
while (sc.hasNextInt()) {
int i = sc.nextInt();
if (i == -1) {
break;
}
tokens.add(i);
System.out.println(i);
}
}
System.out.println(tokens);
答案 1 :(得分:0)
试试这段代码 -
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Stax {
public static void main(String[] args) {
List<Integer> tokens = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
String data = "";
System.out.println("Enter some numbers...");
while (sc.hasNext()) {
data = sc.next();
if (data.equalsIgnoreCase("EXIT")) {
System.out.println();
break;
}
try {
tokens.add(Integer.parseInt(data));
System.out.println(sc.next());
} catch (NumberFormatException e) {
System.out
.println("Error: Your input string cannot be converted to a number.");
e.printStackTrace();
}
}
}
}