Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用方法时有关参数的错误_Java_Arrays_Methods - Fatal编程技术网

Java 调用方法时有关参数的错误

Java 调用方法时有关参数的错误,java,arrays,methods,Java,Arrays,Methods,调用方法findPosition时出错。我试图用这个程序来衡量算法平均运行多长时间,超过1000次迭代。然后我想调用该方法并找到值(如果找到)在数组中的位置。我收到一个编译器错误,传递的参数与方法不匹配。具体来说,第二个参数被视为int,即使我想在数组中传递值。我找不到我的错误,而且我还不熟悉使用数组,所以如果您能告诉我我的错误在哪里,请提前向您表示感谢 import java.util.*; public class AlgorithmRuntime { static int num =

调用方法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;
}
import java.util.*;
公共类算法运行库
{
静态int num=0;
静态长总计=0;
静态长期平均值=0;
公共静态void main(字符串[]args)
{
布尔型isValueInArray;
整数搜索值;
做{
//1.设置
int size=1000;
长和=0;
int[]iArray=新的int[size];
Random rand=新的Random(System.currentTimeMillis());
对于(int i=0;i
findposition
方法接受两个参数;一种类型为
int
,另一种类型为
int-array
。这是findPosition的签名:

public int findPosition(int valueOfInt, int[] array)
但您要传递两个int值,如下所述:

findPosition(searchValue, iArray[isValueInArray];
isArray
是一个int数组,但
iArray[isValueInArray]
是索引
isValueInArray
处的一个int值

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

您需要传入

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

iArray[isValueInArray]将为您提供一个int值,而不是数组。

您希望iArray[isValueInArray]是什么?请注意,
isValueInArray
是一个
boolean
。请确保数组的索引是int值而不是boolean值。谢谢,这是我的错误。我不知道这是如何正确地将数组作为参数传递的。