最后的输出没有出现

时间:2016-01-20 22:04:39

标签: java

我刚回到编程马上,所以我在CodeAbbey.com上用Java做了一些基本问题。我得到一个标准输入,其中输入中的第一个整数是对的数量,后面跟随所有后续输入是数字对。我通过运行代码并粘贴它然后使用Scanner读取它来输入它。我的代码应该分别将这些数字对中的每一对加在一起,然后输出用空格分隔的每个答案。例如:

data:
3
100 8
15 245
1945 54

answer:
108 260 1999

这是我的尝试:

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int size = in.nextInt();

        for (int i = 1; i <= size; i++) {
            int sum = in.nextInt() + in.nextInt();
            System.out.print(sum);
            if (i < size) {
                System.out.print(" ");
            }
        }
    }
}

代码实际上有效,但问题是它最初并没有输出最后一笔。它将所有总和打印到最后一个,但我必须再次按Enter键才能打印最后一个总和,然后从所有其他总和中打印一行。无论我使用的对数或平台数量如何,都会发生这种情况;最后一笔钱永远不会打印,直到我再次点击进入。知道为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

在按下Enter键之前,Scanner将不会收到任何输入。

当您按Enter键时,文本行,例如“1945 54”,进入扫描仪。现在它可以返回下一个intScanner将阻塞,直到它可以读取足够的输入,如果您还没有按Enter键,它将保持阻止状态。这就是按Enter键允许程序打印总和的原因。

答案 1 :(得分:0)

在你点击输入之前,它会挂在输入例程上,因为你可能实际上准备在你输入的内容中添加一个更可扫描的数据(或另一个数字到最后一个数字)。

答案 2 :(得分:0)

您应该在单独的循环中拆分打印部分,而不是在for循环中也要求输入值。

因此,您当前修改的代码为:

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int size = in.nextInt();

        for (int i = 1; i <= size; i++) {
            int sum = in.nextInt() + in.nextInt();
            System.out.print(sum);
            }

        for (int i = 1; i <= size; i++){
            if (i < size) 
                System.out.print(" ");
            }
        }
    }
} 

分割它应该停止您需要在打印最后一个值之前按Enter键