0

调用 findPosition 方法时出现错误。我试图用这个程序做的是测量算法平均运行多长时间,超过 1000 次迭代。然后我想调用该方法并找到该值(如果找到)在数组中的位置。我收到一个编译器错误,即传递的参数与方法不匹配。具体来说,第二个参数被视为 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方法接受两个参数;一个 type int,另一个 type int array。这是 findPosition 的签名:

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

但是您正在向它传递两个 int 值,如此处所述:

findPosition(searchValue, iArray[isValueInArray];

isArray是一个 int 数组,但iArray[isValueInArray]在 index 处是一个 int 值isValueInArray

您需要将数组作为第二个参数而不是 int 值传递。

于 2013-11-06T03:24:27.887 回答
1

你需要传入

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

iArray[isValueInArray] 会给你一个 int 值而不是数组。

于 2013-11-06T03:29:06.637 回答