0

これが私のコードです:

ArrayFunHouseTwo

public class ArrayFunHouseTwo
{
//goingUp() will return true if all numbers
//in numArray are in increasing order
//[1,2,6,9,23] returns true
//[9, 11, 13, 8]  returns false
public static boolean goingUp(int[] numArray)
{
    int num = 0;
    int numMinus = 0;
    for(int x = 1; x < numArray.length; x++){
        System.out.println(x);
        num = numArray[x];
        numMinus = numArray[x-1];

        if(num > numMinus){
            return true;
        }

    }
    return false;           
}

および関連するランナークラス:

import java.util.Arrays;

public class Lab14b
{
public static void main( String args[] )
{
    int[] one = {1,2,3,4,5,6,7,8,9,10};
    int[] two = {1,2,3,9,11,20,30};
    //add more test cases
    //int[] three = {9,8,7,6,5,4,3,2,0,-2};
    //int[] four = {3,6,9,12,15,18,21,23,19,17,15,13,11,10,9,6,3,2,1,0};

    System.out.println(Arrays.toString(one));
    System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(one));
    System.out.println(Arrays.toString(two));
    System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(two));
    //add more test cases
    //System.out.println(Arrays.toString(three));
    //System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(three));
    //System.out.println(Arrays.toString(four));
    //System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(four));

印刷して、配列全体を読み取っていることを証明したいのですが、読み取っている配列は3番目の配列だけであり、位置xのすべての値またはxの値を出力します。println()ステートメントのコーディング方法

4

2 に答える 2

4
if(num > numMinus){
    return true;
}

これは、前の番号よりも大きい番号を見つけるとすぐに、ループを終了することを意味します。この時点でやりたいことはこんな感じです。

...
    if(num <= numMinus){
        return false;
    }
}
return true;
}

編集:<=基本的に連続した数値をチェックし、数値が等しいか減少している場合は、フラグをfalseに設定するという条件を修正しました(実際、この時点でfalseを返すことができます)

于 2012-12-14T02:20:38.187 に答える
0

わかりました。いくつか問題があります。

x=0でforループを開始します。Javaのすべての配列は、0から始まり、配列の長さ-1まで実行されます。つまり、x <numArray.lengthが正しいことを意味します(これに従わない場合は、よく考えてください)。

System.out.println(x); xの値を出力します。これは単なるカウンターです。

System.out.println(numArray [x]); 配列の内容をx値で出力します(つまり、0から始まり長さ-1まで)

numMinus = numArray [x-1]; -1のインデックスを見ることができないため、問題が発生します。代わりに、xの値をx+1の値と比較してください。つまり、(numArray [x] <numArray [x + 1])はtrueを返す必要があります。numArray[x + 1]を見ているので、forループの条件をx <numArray.length-1に変更します。そうしないと、終了します。配列の終わりを過ぎて見るためのエラーを作成します。

現在、最初の比較の結果を返しています。戻り値がループを壊すためです。少なくともfalseを取得するか値がなくなるまで、すべての値をチェックした後でのみ結果が必要になると確信しています。

この関数内にブール値を作成し、それを使用して、各ペアがtrueであるかどうかを追跡します。値がfalseになった場合は、それを返します。それ以外の場合は、関数の最後に(trueのみ)値を返します。

私がすべての問題を抱えているなら、Dunnoですが、これらを修正すれば、順調に進むでしょう。

于 2012-12-14T02:46:15.073 に答える