我刚回到编程马上,所以我在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键才能打印最后一个总和,然后从所有其他总和中打印一行。无论我使用的对数或平台数量如何,都会发生这种情况;最后一笔钱永远不会打印,直到我再次点击进入。知道为什么会这样吗?
答案 0 :(得分:0)
在按下Enter键之前,Scanner
将不会收到任何输入。
当您按Enter键时,文本行,例如“1945 54”,进入扫描仪。现在它可以返回下一个int
。 Scanner
将阻塞,直到它可以读取足够的输入,如果您还没有按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键