2

実際、私はこのグループに不慣れで、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

私はそれが来ることを知っていますが、試してみ
ましたので、コンソールを介してそれらの数値を渡す方法について知りたいですか?

4

5 に答える 5

3

int 数値[];

new配列はオブジェクトなので、 as を使用してヒープに割り当てる必要があります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を見てください。

于 2012-11-28T07:19:01.407 に答える
1

これは、コマンドラインまたはターミナルで値の配列を渡す方法であり、そのアプリケーションを実行するために使用している場合、これで十分です

java SomeJavaFile.java 1,2,3,4,5
于 2012-11-28T07:16:30.183 に答える
0
numbers = Integer.parseInt(br.readLine());

parserInt()単一の整数を返し、numbers配列です。ループが必要です。

あなたのaverage()方法に関しては、浮動小数点演算の使用を検討することをお勧めします。そうしないと、の平均は1 1 1 1 1 1 0ゼロになります。

于 2012-11-28T07:16:28.627 に答える
0
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;
          }
          }
于 2012-11-28T07:29:30.787 に答える
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]);
}
于 2012-11-28T07:18:22.250 に答える