Java返回(值)错误

时间:2016-11-26 05:07:17

标签: java arrays return counter

我在代码中尝试了不同的东西,但我总是遇到错误。

程序的指令是我需要一个函数(除了main)接收一个整数值数组的参数,第二个参数告诉用户查看数组的期望值。
它还必须返回阵列上重复欲望值的次数 错误与计数器有关,也有一些在主要功能中 我想我没有正确地返回计数器值。

这是我目前的代码:

  import java.util.Scanner;
  import java.util.Arrays;

  public class ArregloBusqueda2
  {
    static int findRepetition(int listOfValues[], int targetValue, int counter)
    {
        int  i;
        boolean found = false;

        for(i=0; i<listOfValues.length; i++)
        {
           while((counter < listOfValues.length))
              {
                 if(listOfValues[i] == targetValue)
                    {
                       counter = counter + 1;
                    }
              }
        }
        return counter;
     }


     public static int main(String[] args)
     {
       Scanner input = new Scanner (System.in);

       int targetValue;
       int listOfValues[] = {1,6,3,8,5,8,3,4,8,3};

       System.out.println("Please enter the desire number to look for: ");
       targetValue=input.nextInt();

       findRepetition(targetValue, counter);


       if(counter != 0)
       {
          System.out.println("The frequency of the number " + targetValue + " is: " + counter);
       }
       else
       {
          System.out.println ("The number " + targetValue + " is not contained     in the array list");
       }
    }
 }

3 个答案:

答案 0 :(得分:2)

代码中存在多个问题。

  1. public static int main(String[] args)应为public static void main(String[] args)
  2. findRepetition有三个参数, 但是你传递了两个agruments
  3. counter变量未声明
  4. 如果计数器值小于listOfValues,则逻辑缺陷while((counter < listOfValues.length))将继续执行。

     static int findRepetition(int listOfValues[], int targetValue) {
        int i;
        int counter = 0;
    
        for (i = 0; i < listOfValues.length; i++) {
            if (listOfValues[i] == targetValue) {
                counter = counter + 1;
            }
        }
        return counter;
    }
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
    
        int targetValue;
        int listOfValues[] = { 1, 6, 3, 8, 5, 8, 3, 4, 8, 3 };
    
        System.out.println("Please enter the desire number to look for: ");
        targetValue = input.nextInt();
    
        int counter = findRepetition(listOfValues, targetValue);
    
        if (counter != 0) {
            System.out.println("The frequency of the number " + targetValue + " is: " + counter);
        } else {
            System.out.println("The number " + targetValue + " is not contained     in the array list");
        }
    
    }
    

答案 1 :(得分:0)

您使方法接受三个参数。

static int findRepetition(int listOfValues[], int targetValue, int counter)

问问自己 - 你想“通过一个柜台”,还是仅仅return它?说明书说后者。

调用此方法时,您未提供正确的输入。

findRepetition(targetValue, counter);

listOfValues怎么样?您希望findReptition listOfValues上的targetValue,对吗?因此,在该方法调用中提供正确的参数。

同样,您可能不需要传递counter。因为Java is always pass-by-value

相反,你想要return counter,正如你所写的那样。你正在寻找这个。

int counter = findRepetition(listOfValues, targetValue);

修复代码的其余部分是一项学习练习。

答案 2 :(得分:0)

您没有使用必需参数调用findRepetition(),findRepetition方法需要3个参数,但您只传递2个参数。