我试图将所有数字放在同一行输入上,目前我有下面的代码。
这会扫描用户输入,对数字进行平方,然后将其添加到数组列表中。一旦while循环中断,阵列列表就会打印给用户。
但是,当我输入多个int(用空格分隔)时,扫描仪只读取第一个。
while(scanner.hasNextInt()){
int result = 0;
int num = scanner.nextInt();
if(num > 0){
result += num * num;
}
numbers.add(result);
scanner.nextLine();
System.out.println("Play again? Enter 'Y' or 'N'");
String input = scanner.nextLine();
if (input.equals("N")) {
break;
}
}
所以例如......
I / O:5 5 5
存储在数组列表中的数字:25
应该是:75
答案 0 :(得分:0)
您最好的选择是从用户输入中读取每个数字,然后将其拆分为array
,然后循环显示所述array
并总计结果。
do {
int result = 0;
String userNumbers = scanner.nextLine();
String words[] = userNumbers.split(" ");
for (String word : words) {
result += Integer.parseInt(word) * Integer.parseInt(word);
}
numbers.add(result);
System.out.println("Play again? Enter 'Y' or 'N'");
input = scanner.nextLine();
} while (!input.equalsIgnoreCase("N"));
答案 1 :(得分:0)
while (true) {
System.out.print("Enter numbers: ");
String input = scanner.nextLine();
try {
final long sum = Arrays.stream(input.split("\\s+"))
.mapToLong(Long::parseLong)
.reduce((left, right) -> left * right)
.getAsLong();
System.out.println("Result: " + sum);
} catch (NumberFormatException e) {
System.out.println("Only enter numbers!");
}
System.out.println("Play again? Enter 'Y' or 'N'");
if (scanner.nextLine().equalsIgnoreCase("n")) {
break;
}
}
这将产生:
Enter numbers: 5 5 5
Result: 125
Play again? Enter 'Y' or 'N'
n