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 に答える
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;
}

バグ修正に注意: after からセミコロンを削除for()

于 2013-09-19T15:36:08.863 に答える