Java - 对所有输入

时间:2017-11-28 10:32:07

标签: java arrays

我试图将所有数字放在同一行输入上,目前我有下面的代码。
这会扫描用户输入,对数字进行平方,然后将其添加到数组列表中。一旦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

2 个答案:

答案 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"));

Try it online!

答案 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