public class ArrayPrac {
public static void main(String[] args) {
int[] arrayOne = {2, 3, 4, 5, 6};
System.out.println(findMin(arrayOne));
}
public static void findMin(int[] list) {
int minValue = list[0];
int i = 1;
for( i = 1; 1 < list.length; i++);
if(list[i] < minValue) {
minValue = list[i];
}
}
}
在第6行的System.out.print部分中,它不会运行并给出编译器错误:
PrintStream类型中的println(boolean)方法不适用于参数(void)
我似乎整天都在寻找答案,所以现在我发布我的具体案例。
干杯。
答案 0 :(得分:7)
解决此问题,在findMin()
方法结束时,您必须返回找到的最小值:
return minValue;
因此,方法签名也必须改变:
public static int findMin(int[] list)
这是有道理的:如果findMin()
方法完成所有努力以找到最小值,那么最终结果不能保留为局部变量,如果不这样做,它将无法在外面使用在方法调用结束后返回它。
顺便提一下,潜伏着另一个难以发现的错误。使用;
删除行末尾的for
,并将循环内容放在一对{}
中。目前,循环为空,for
之后的行位于循环之后。循环条件也是错误的!以下是修复所有问题后该方法应该如何处理:
public static int findMin(int[] list) {
int minValue = list[0];
for (int i = 1; i < list.length; i++) {
if (list[i] < minValue) {
minValue = list[i];
}
}
return minValue;
}
答案 1 :(得分:2)
System.out.println
需要String
输入,但您传递的是void
。因为您的方法findMin
返回void。这导致编译器错误。
现在谈到逻辑问题,您可能希望显示findMin方法的输出,但该方法不返回任何内容。所以返回minValue
可能在这里有意义。
从int
方法返回minValue
值后,您可以通过将结果连接到空字符串来显示结果。像这样:
System.out.println("" + findMin(arrayOne));
答案 2 :(得分:0)
方法findMin()
被声明为返回类型void
:声明它返回一些东西(并返回一些东西),
public static int findMin(int[] list) {
int minValue = list[0];
int i = 1;
for( i = 1; 1 < list.length; i++)
if(list[i] < minValue) {
minValue = list[i];
}
return minValue;
}
注意修复bug:从for()