java - 使用扫描仪读取多个位

标签 java java.util.scanner

我有一个简单的代码,可以读取用户输入的值:

Scanner scanner = new Scanner(System.in);
System.out.printf("Enter with values: ");

String symbol = scanner.next();
System.out.println(symbol);
// But now I only have a single value

但是我想获取所有输入的值,而不仅仅是一些。输入可以是

01
// or
01011
// or
000000000000000000000001110

用户可以输入他想要的任何值。我想要一个包含每个单独输入位的数组。

数组示例:

String[] entries;
entries [0] = "0";
entries [1] = "1";
...

有什么想法可以做到这一点吗?

最佳答案

说明

使用 Scanner#nextLine ( documentation 读取完整输入,而不仅仅是单个标记。然后对结果调用 String#toCharArray ( documentation ) String。然后您将得到一个包含所有字符的char[]

String input = scanner.nextLine();
char[] values = input.toCharArray();

验证并int[]

如果您想验证输入(仅 01),并且可能更喜欢 int[] 而不是char[],只需循环单个字符,验证并收集它们。

在这种情况下,您应该更喜欢 String#charAt ( documentation ) 以避免 String#toCharArray 引起的额外复制。

String input = scanner.nextLine();
int[] values = new int[input.length()];
for (int i = 0; i < input.length(); i++) {
    char c = input.charAt(i);
    if (c != '0' && c != '1') {
        throw new IllegalArgumentException("Only 1 and 0 are allowed!");
    }
    values[i] = (int) c;
}

关于java - 使用扫描仪读取多个位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937968/

相关文章:

java - 无法在方法内关闭扫描仪?非静态方法Close()

java - 每次创建android项目时都会出现错误

java - Spring Boot Rest api 的指标

java - 在 ProGuard for Android 中禁用主动重载

Java:如何读取输入 int

java - 递归地从扫描仪输入中反转数字_order_

java - 使用 Scanner 来分离字符串

java - 多 Activity 中用 EventBus 替换 LiveData

java - 当我尝试使用 awt 机器人输入 java 时,什么也没输出,我做错了什么?

java - while + 扫描仪与 System.in + hasNext