我不知道这里有什么问题
import java.util.Scanner;
public class CountingInts {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int count = 0;
System.out.print("Numbers: ");
while (input.hasNextInt()) {
int x = input.nextInt();
count = count + 1;
}
System.out.print(count);
input.close();
}
}
我想输入一些整数i.g. (1 2 3 4 10)之间有空格,然后计算有多少数字。因此,如果输入是' 1 2 3 4 10'输出是' 5'因为有五个数字。我认为while循环可以做到这一点,但它似乎永远循环。问题是它从不做System.out.print(count);在底部:/任何知道什么是错的?
答案 0 :(得分:3)
程序 1 没有任何问题。问题在于您使用它的方式。我假设您只是像这样运行它:
java CountingInts
要使其停止,你可以给它一些不是数字的东西(任何东西!),或者你可以告诉控制台驱动程序输入流是名义上的“文件结尾”
在控制台上发出EOF信号的方式取决于平台:
在Linux,Unix和Mac OSX控制台上,CTRL-D字符表示EOF。
在Windows控制台上,CTRL-Z字符表示EOF。
在Eclipse控制台视图中,EOF绑定到CTRL-D或CTRL-Z,具体取决于您的基础平台。
其他IDE可能与Eclipse相同。
(这些字符绑定可能会被更改。当然,它们可以在Linux,Unix和Eclipse中更改。)
1 - 这是一个过度陈述:有一些小问题。我还假设要求表示程序在看到不是数字的东西时应该停止计数。
答案 1 :(得分:0)
import java.util.Scanner;
public class CountingInts {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int count = 0;
System.out.print("Numbers: ");
while (input.hasNextInt()) {
// this line was your problem.
//int x = input.nextInt();
// Rewrite this as count++;
//count = count + 1;
}
System.out.print(count);
input.close();
}
}
相反,尝试这样写。
import java.util.Scanner;
public class CountingInts {
public static void main(String args[]) {
int count = 0;
Scanner input = new Scanner(System.in);
System.out.print("Numbers: ");
while (input.hasNextInt()) {
input.nextInt();
count++;
}
System.out.print(count);
input.close();
}
}
每当您引用' nextInt();'时,它都会清除该整数的缓冲区。您应该将while循环保留为input.hasNextInt()。这将检查扫描仪缓冲区中的每个输入,并确保它是整数类型,然后将while循环的内部更改为我建议的代码。 input.nextInt()将清除缓冲区,count ++将每个循环的count变量递增1。
您可能希望使此代码更加健壮,以便只允许输入'整数'
编辑:希望这有帮助!