1
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)

我似乎整天都在寻找答案,所以现在我发布我的具体案例。

干杯。

4

3 回答 3

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;
}
于 2013-09-19T15:33:27.557 回答
2

System.out.println接受String输入,但您传递的是void. 由于您的方法findMin返回无效。这导致编译器错误。

现在谈到逻辑问题,您可能想要显示 findMin 方法的输出,但该方法不返回任何内容。所以在这里回归minValue可能是有意义的。

从方法返回intminValue后,您可以通过将结果连接到空字符串来显示结果。像这样的东西:

    System.out.println("" + findMin(arrayOne));
于 2013-09-19T15:34:26.997 回答
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;
}

注意修复错误:从后面删除分号for()

于 2013-09-19T15:36:08.863 回答