0

メソッド findPosition を呼び出すときにエラーが発生します。私がこのプログラムでやろうとしているのは、アルゴリズムが平均して 1000 回以上実行される時間を測定することです。次に、メソッドを呼び出して、配列内の値の位置 (見つかった場合) を見つけたいと思います。渡される引数がメソッドと一致しないというコンパイラ エラーが発生します。具体的には、値を配列で渡したいのに、2 番目の引数が int として取得されています。私は自分のエラーを見つけることができず、配列を扱うのは初めてなので、私の間違いがどこにあるのか教えていただければ、事前に感謝します.

import java.util.*;

public class AlgorithmRuntime 
{

static int num = 0;
static long total = 0;
static long average = 0;

public static void main (String[] args)
{
    boolean isValueInArray;
    int searchValue;

    do {
    // 1. Setup
    int size = 1000;
    long sum = 0;
    int[] iArray = new int[size];

    Random rand = new Random(System.currentTimeMillis());
    for (int i = 0; i < size; i++)
        iArray[i] = rand.nextInt();

    searchValue = rand.nextInt(1000) + 1;

    // 2. Start time
    long start = System.nanoTime();

    // 3. Execute algorithm
    for (int j = 0; j < size; j++)
    {
        if (iArray[j] == searchValue)
        {
            isValueInArray = true;
        }

        if (isValueInArray == true)
            findPosition(searchValue, iArray[isValueInArray]);
    }

    // 4. Stop time
    long stop = System.nanoTime();

    long timeElapsed = stop - start;

    total = total + timeElapsed;
    num++;

    } while (num < 1000);

    average = total / 1000;

    System.out.println("The algorithm took " + average 
            + " nanoseconds on average to complete.");
}
}

public int findPosition(int valueOfInt, int[] array)
{
  for (int i = 0; i < array.length; i++)
    if (array[i] == valueOfInt)
     return i;

  return -1;
}
4

2 に答える 2

1

findPostionメソッドは 2 つの引数を受け入れます。type の 1 つと typeintのもう1 つint array。findPosition のシグネチャは次のとおりです。

public int findPosition(int valueOfInt, int[] array)

ただし、ここで説明したように、2 つの int 値を渡しています。

findPosition(searchValue, iArray[isValueInArray];

isArrayは int 配列ですがiArray[isValueInArray]、 index の int 値isValueInArrayです。

int 値ではなく、2 番目のパラメーターとして配列を渡す必要があります。

于 2013-11-06T03:24:27.887 に答える