我有一个简单的代码,可以读取用户输入的值:
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[]
如果您想验证输入(仅 0
和 1
),并且可能更喜欢 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/