我试图写一个程序,它会告诉你:
但我在确定如何访问这些个人号码方面遇到了一些麻烦。我已经尝试过编写while循环,以及" if"声明。
我遇到的另一个问题是,当我尝试运行我的程序时,我收到此错误消息:线程中的异常" main" java.lang.IllegalStateException:扫描程序已关闭。
注意:我是Java的新手,所以更简单的解决方案主要使用扫描仪,下一个方法和hasNext方法会更好!
import java.util.Scanner;
public class InputParser
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("How many values do you want to parse?: ");
int numValues = scanner.nextInt();
System.out.println("Please enter " + numValues + " values: ");
while(scanner.hasNextLine())
{
if(scanner.hasNext())
{
if(scanner.hasNextInt())
{
int sum;
System.out.println("The sum of your values is: " + sum + ".");
}
}
scanner.close();
}
}
}
答案 0 :(得分:2)
您的代码应该是:
Scanner scanner = new Scanner(System.in);
System.out.print("How many values do you want to parse?: ");
int numValues = scanner.nextInt();
int[] values = new int(numValues);
int sum = 0,i=0;
while(i<numValues)
{ i++;
System.out.print("Enter "+ i+" number : ");
values[i-1] = scanner.nextInt();
sum+= values[i-1];
}
System.out.println("Sum is : "+sum);
scanner.close();
没有真正考虑错误处理。
答案 1 :(得分:1)
我不明白为什么你会问用户他们想要提前多少数字。基本上,您的代码可以简化并处理任意数量的数字。在[{1}}包裹close()
上致电Scanner
也是非常糟糕的主意(因为您无法重新打开它,如果你将它提取到一个方法中,你将创建一个难以调试和发现问题)。无论如何,你可以做点什么,
System.in
修改根据您的评论,
Scanner scanner = new Scanner(System.in);
// System.out.print("How many values do you want to parse?: ");
// int numValues = scanner.nextInt();
System.out.println("Please enter values to sum (type quit to stop)");
int sum = 0; // <-- start at 0.
int count = 0;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
count++;
sum += scanner.nextInt();
} else {
String str = scanner.next();
if (str.equalsIgnoreCase("quit")) {
break; // <-- end the loop.
}
System.out.printf("The value '%s' is not an int (quit to stop).%n", str);
}
}
System.out.printf("The sum of your %d values is %d.%n", count, sum);
// scanner.close(); // <-- Really Bad Idea