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)
似乎整天都在寻找答案,所以现在我发布我的具体案例。
干杯。
修复此问题,在 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;
}
System.out.println
接受String
输入,但您正在传递void
。作为您的方法findMin
返回 void。这会导致编译器错误。
现在说到逻辑问题,您可能希望显示findMin方法的输出,但该方法不返回任何内容。因此,返回minValue
在这里可能是有意义的。
从方法返回int
值后minValue
可以通过将其连接到空字符串来显示结果。像这样:
System.out.println("" + findMin(arrayOne));
方法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;
}
注意修复错误:从for()
后删除分号