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

Java 如何从用户输入列表中添加数字?,java,Java,我正在尝试编写一个程序,它将告诉您: 用户在命令提示下输入的列表中的整数数 这些整数的和 但我在弄清楚如何访问这些单独的号码时遇到了一些困难。我已经尝试过编写while循环,以及“if”语句 我遇到的另一个问题是,当我尝试运行我的程序时,我收到以下错误消息:线程“main”java.lang.IllegalStateException中的异常:扫描程序关闭 注意:我对Java非常陌生,所以一个主要使用扫描器、next方法和hasNext方法的更简单的解决方案会更好 import java.uti

我正在尝试编写一个程序,它将告诉您:

  • 用户在命令提示下输入的列表中的整数数
  • 这些整数的和 但我在弄清楚如何访问这些单独的号码时遇到了一些困难。我已经尝试过编写while循环,以及“if”语句

    我遇到的另一个问题是,当我尝试运行我的程序时,我收到以下错误消息:线程“main”java.lang.IllegalStateException中的异常:扫描程序关闭

    注意:我对Java非常陌生,所以一个主要使用扫描器、next方法和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();
          }
       }
    }
    

    您的代码应该如下所示:

      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();
    
    Scanner Scanner=新的扫描仪(System.in);
    System.out.print(“要解析多少个值?”:”;
    int numValues=scanner.nextInt();
    int[]值=新的int(numValues);
    整数和=0,i=0;
    
    而(i您的代码应该是:

      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();
    
    Scanner Scanner=新的扫描仪(System.in);
    System.out.print(“要解析多少个值?”:”;
    int numValues=scanner.nextInt();
    int[]值=新的int(numValues);
    整数和=0,i=0;
    
    而(i您的代码应该是:

      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();
    
    Scanner Scanner=新的扫描仪(System.in);
    System.out.print(“要解析多少个值?”:”;
    int numValues=scanner.nextInt();
    int[]值=新的int(numValues);
    整数和=0,i=0;
    
    而(i您的代码应该是:

      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();
    
    Scanner Scanner=新的扫描仪(System.in);
    System.out.print(“要解析多少个值?”:”;
    int numValues=scanner.nextInt();
    int[]值=新的int(numValues);
    整数和=0,i=0;
    
    虽然(我我不明白为什么你会问用户他们要提前求和多少个数字。基本上,你的代码可以简化并处理任意数量的数字。在
    扫描仪上调用
    close()
    也是一个非常糟糕的主意(因为你无法重新打开它,如果你将它提取到一个方法中,你将创建一个难以调试和查找的问题)

    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
    
    Scanner Scanner=新的扫描仪(System.in);
    //System.out.print(“要解析多少个值?”:”;
    //int numValues=scanner.nextInt();
    System.out.println(“请输入要求和的值(键入quit停止)”;
    
    int sum=0;//我不明白为什么你会问用户他们要提前求和多少个数字。基本上,你的代码可以简化并处理任意数量的数字。在
    扫描仪上调用
    close()
    也是一个非常糟糕的主意(因为你无法重新打开它,如果你将它提取到一个方法中,你将创建一个难以调试和查找的问题)

    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
    
    Scanner Scanner=新的扫描仪(System.in);
    //System.out.print(“要解析多少个值?”:”;
    //int numValues=scanner.nextInt();
    System.out.println(“请输入要求和的值(键入quit停止)”;
    
    int sum=0;//我不明白为什么你会问用户他们要提前求和多少个数字。基本上,你的代码可以简化并处理任意数量的数字。在
    扫描仪上调用
    close()
    也是一个非常糟糕的主意(因为你无法重新打开它,如果你将它提取到一个方法中,你将创建一个难以调试和查找的问题)

    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
    
    Scanner Scanner=新的扫描仪(System.in);
    //System.out.print(“要解析多少个值?”:”;
    //int numValues=scanner.nextInt();
    System.out.println(“请输入要求和的值(键入quit停止)”;
    
    int sum=0;//我不明白为什么你会问用户他们要提前求和多少个数字。基本上,你的代码可以简化并处理任意数量的数字。在
    扫描仪上调用
    close()
    也是一个非常糟糕的主意(因为你无法重新打开它,如果你将它提取到一个方法中,你将创建一个难以调试和查找的问题)

    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
    
    Scanner Scanner=新的扫描仪(System.in);
    //System.out.print(“要解析多少个值?”:”;
    //int numValues=scanner.nextInt();
    System.out.println(“请输入要求和的值(键入quit停止)”;
    

    int sum=0;//您只需将每个数字存储在arraylist中,然后在获取完数字后对arraylist中的所有元素求和即可。噢!可能我使用了错误的单词,即“命令提示符”是用户在终端窗口输入值。对不起,编程还是很新!这可能是个愚蠢的问题,但我如何将每个数字存储在数组中?我知道如何迭代数组并以这种方式获取总数,但如何存储数字?移动扫描器。在循环外关闭以消除错误您的代码如下运行:您输入一些内容;扫描器测试是否有下一行、下一行和下一个int,然后您打印一些内容,然后扫描器关闭。然后,在扫描器关闭后,您再次测试它是否有下一行。这是异常的来源。您可以将每个数字存储在arraylist中,然后在获取完数字后对arraylist中的所有元素求和。噢!也许我用错了词,我所说的“命令提示符”是用户在终端窗口输入值。对不起,编程还是很新!这可能是个愚蠢的问题,但我如何将每个数字存储在数组中?我知道如何迭代数组并以这种方式获取总数,但如何存储数字?移动扫描器。在循环外关闭以消除错误。您的代码如下运行:您输入某个内容;扫描器测试是否有下一行、下一个内容和下一个整数,然后您打印某个内容,然后扫描器关闭。然后,在扫描器关闭后