如何从用户输入列表中添加数字?

时间:2014-10-02 00:37:18

标签: java

我试图写一个程序,它会告诉你:

  1. 用户在命令提示符下输入的列表中的整数数
  2. 这些整数的总和。
  3. 但我在确定如何访问这些个人号码方面遇到了一些麻烦。我已经尝试过编写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();
          }
       }
    }
    

2 个答案:

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