繁体   English   中英

通过控制台将数组的元素传递来查找数字平均值

[英]finding average of numbers by passing elements of an array through console

实际上,我是该小组的新手,也是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

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

int数字[];

由于数组是一个对象,因此需要使用new作为int numbers[] = new int[size];在堆上分配它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

如果您使用它来运行该应用程序,则可以通过这种方式在命令行或终端中传递值数组

java SomeJavaFile.java 1,2,3,4,5
numbers = Integer.parseInt(br.readLine());

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

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

使用ArrayList<Integer> numbers = new ArrayList<Integer>代替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]);
}
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;
          }
          }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM