Java Scanner从用户处获取大量输入并打印出来
我正在做一个小程序。我需要从用户那里得到一些整数并打印出来。我还需要确定输入是否有效。这是我的密码:Java Scanner从用户处获取大量输入并打印出来,java,Java,我正在做一个小程序。我需要从用户那里得到一些整数并打印出来。我还需要确定输入是否有效。这是我的密码: List<Integer> tokens = new ArrayList<Integer>(); Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { tokens.add(sc.nextInt()); System.out.println(sc.nextInt()); } 我的第一个
List<Integer> tokens = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
tokens.add(sc.nextInt());
System.out.println(sc.nextInt());
}
我的第一个问题是如何识别输入的类型并将此信息存储在变量中。
我的第二个问题是,当我运行代码时,我进入了一个无限循环。输入输入后,程序将打印所有内容,然后再次等待输入。我如何解决这个问题?
我真的很感谢你的帮助 这可能会帮助您:
为什么在循环中调用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);
阅读尝试以下代码-
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();
}
}
}
}
ScannernextInt做什么?hasNextInt做什么?什么是无限循环?为while循环提供的布尔值有什么用途?提示:阅读一些教程如果sc.hasNextInt为true,程序将打印下一个整数,否则循环将结束。nextInt希望在每次调用它时使用另一个int。每个循环步骤调用两次。你没有一个无限循环,你有你不期望的阻塞。