0

基本的に、私は 10*10 グリッドのあるポイントから別のポイントへのパスを見つけるパス検索プログラムを書いて実験しています。

Path私は s のArrayList であるクラスを持っていますGridSquare(これは単なる美化された座標です)。

クラス内にパスを表示するための小さなメソッドを書きましたPathが、ここで問題が発生します。これは非常に小さな問題ですが、非常に腹立たしいものです。

コードを実行しようとして を呼び出すと、コンソール displayPath何も出力されず、プログラムはエラーなしで終了します。

のコードは次のdisplayPathとおりです。

public void displayPath(){
    System.out.println("This is displayPrint"); //This line is included to make sure the program calls the method correctly.
    for(int i=1; i==10; i++){
        for(int j=1; j==10; j++){
            if(this.includesSquare(i, j)){
                System.out.print("[x]");
            } else {
                System.out.print("[ ]");
            }
        }
        System.out.print("\n");
    }
}

console/System.out.print() が正しく機能し、メソッドが呼び出されるたびにこれが表示されることを確認するために、最初の行を含めました。

のコードは次のincludesSquareとおりです。

public boolean includesSquare(int x, int y){
    for(GridSquare square : this.path){
        if(square.getX()==x && square.getY()==y){
            return true;
        }
    }
    return false;
}

Eclipseをアンインストールして再インストールし、Javaファイルを新しいプロジェクトectにコピーしましたが、何も違いがないようです。displayPathの最初の行が正しく表示されるため、コンソールが正常に機能していることはわかっています。

どんな助けでも大歓迎です!

4

2 に答える 2

3

for(int i=1; i==10; i++)動作しfor(int j=1; j==10; j++)ません。

中間条件 ( i==10) は、ループがいつ実行されるかを示すことになっています。iそのままでは、 が10 に等しい場合にのみループを実行したいと言っています。i最初は が 1 に等しいため、ループをスキップします。

あなたが望む可能性が高いのは

for(int i=1; i<10; i++)

このように、iが 1 に等しい場合、10 未満であるという条件が満たされるため、ループが実行されてiインクリメントされます。これは が 10 に等しくなるまで発生し続けi、その時点で条件i<10が失敗するため、ループは終了します。

簡単に言うと、「これが true になるまでループする」ではなく、「これが true のループする」という条件を指定する必要があります。

于 2015-10-01T19:54:48.597 に答える