我在代码中尝试了不同的东西,但我总是遇到错误。
程序的指令是我需要一个函数(除了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");
}
}
}
答案 0 :(得分:2)
代码中存在多个问题。
public static int main(String[] args)
应为public static
void main(String[] args)
findRepetition
有三个参数,
但是你传递了两个agruments counter
变量未声明如果计数器值小于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个参数。