【问题标题】:finding average of numbers by passing elements of an array through console通过控制台传递数组的元素来查找数字的平均值
【发布时间】:2012-11-28 07:13:03
【问题描述】:

实际上我是这个小组的新手,也是 Java 的新手,我想知道如何通过控制台传递数组参数,我最终像这样编程:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Average
  {
    public static void main(String []args)
    {
      int numbers[];

      try
       {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      numbers =Integer.parseInt( br.readLine());
       }
      catch(NumberFormatException ne)
            {
                    System.out.println("Invalid input: " + ne);
                    System.exit(0);
            }
            catch(IOException ioe)
            {
                    System.out.println("I/O Error: " + ioe);
                    System.exit(0);
            }
        System.out.println(methodAverage());
            }


        public static int methodAverage(int...numbers)
        {
         int sum=0;
         int avg=0;

         for(int x:numbers)
         {
          sum+=x;
          avg=sum/numbers.length;
          return avg;
          }
          }
          }

错误是

Average.java:13: error: incompatible types
numbers =Integer.parseInt( br.readLine());
         ^
required: int[]
found:    int
  1 error

我知道它会来,但我只是尝试过
所以我只想知道如何通过控制台传递这些数字?

【问题讨论】:

    标签: java arrays parameters console


    【解决方案1】:

    整数[];

    由于数组是一个对象,您需要使用new 在堆上分配它 int numbers[] = new int[size];.

    Average.java:13: 错误:不兼容的类型
    数字 =Integer.parseInt(br.readLine());

    --> Integer.parseInt() 返回整数而不是数组,您可以使用:

    for(int index=0; index<size; index++) {
        numbers[index] =Integer.parseInt( br.readLine()); // add exception handling code as above
    }
    

    您正在使用 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 从控制台读取值,而不是我建议您使用 Scanner 类。看看java.util.Scanner

    【讨论】:

      【解决方案2】:

      如果您使用它来运行该应用程序,那么您在命令行或终端中传递值数组的方式就足够了

      java SomeJavaFile.java 1,2,3,4,5
      

      【讨论】:

        【解决方案3】:
        numbers = Integer.parseInt(br.readLine());
        

        parserInt() 返回一个整数,numbers 是一个数组。你需要一个循环。

        至于您的 average() 方法,您可能需要考虑使用浮点数学。否则,1 1 1 1 1 1 0 的平均值将为零。

        【讨论】:

          【解决方案4】:

          使用ArrayList&lt;Integer&gt; numbers = new ArrayList&lt;Integer&gt; 代替int[] numbers;和改变 numbers =Integer.parseInt( br.readLine());numbers.add(Integer.parseInt( br.readLine())); 这允许您读取每个输入行的单个整数。

          如果您有一行输入多个整数:

          String[] nums = br.readLine().split(" ");
          int[] numbers = new int[nums.length];
          for(int i = 0; i < nums.length; i++) {
           numbers[i] = Integer.parseInt(nums[i]);
          }
          

          【讨论】:

            【解决方案5】:
            Please find the modified program to get the average.
            I have used space as a separator when user enters the inputs.
            
            package Test;
            import java.io.BufferedReader;
            import java.io.IOException;
            import java.io.InputStreamReader;
            class Average
              {
                public static void main(String []args)
                {
                 // int numbers;
                  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                  String ip = null;
                try {
                    ip = br.readLine();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                  String[] items=ip.split(" ");
                  int[] results = new int[items.length];
                  try
                   {
            
            
                  for (int i = 0; i < items.length; i++) {
                      try {
                          results[i] = Integer.parseInt(items[i]);
                      } catch (NumberFormatException nfe) {};
                  }
                   }
                  catch(NumberFormatException ne)
                        {
                                System.out.println("Invalid input: " + ne);
                                System.exit(0);
                        }
                    System.out.println(methodAverage(results));
                        }
            
            
                    public static int methodAverage(int...numbers)
                    {
                     int sum=0;
                     int avg=0;
            
                     for(int x:numbers)
                     {
                      sum+=x;
                      avg=sum/numbers.length;
                      }
                    return avg;
                      }
                      }
            

            【讨论】:

              猜你喜欢
              • 2014-03-31
              • 2017-06-11
              • 2013-12-29
              • 1970-01-01
              • 2015-01-15
              • 2020-09-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多