0

私が抱えている問題は、印刷するhorizontalLine(1, 1, 3, 1)と、コンソールの前にhorizo​​ntalLineが追加されることです。重複を止める方法はありますか?

public class Array {

static String arrayPicture[][];

public static void main (String[] args) {

    arrayPicture = new String [5][5];

    for (int i = 0; i < 5; i ++) {

        for (int j = 0; j < 5; j ++) {
            arrayPicture [i][j] = " ";
    }
}
        horizontalLine (0, 0, 4, 0);
        horizontalLine (1, 1, 3, 1);
}
public static void horizontalLine (int x1, int y1, int x2, int y2) {

            for (int k = x1; k < x2; k ++) {
                arrayPicture [y1][k] = "*";
            }
            picture();
            System.out.println ();
}
public static void picture () {
            for (int i = 0; i < 5; i ++) {

            for (int j = 0; j < 5; j ++) {
                System.out.print (arrayPicture[i][j]);
                }
            }
        }
}
4

1 に答える 1

0

picture()2番目の配列を出力するために、インデックスが0...に再起動するため、すべてがメソッドで発生します。

ここで解決策として、メソッドの引数に注意してくださいpicture():(コードが元々読みにくい場合でも)

class Array {

    static String arrayPicture[][];

    public static void main(String[] args) {

        arrayPicture = new String[5][5];

        for (int i = 0; i < 5; i++) {

            for (int j = 0; j < 5; j++) {
                arrayPicture[i][j] = " ";
            }
        }
        horizontalLine(0, 0, 4);
        horizontalLine(1, 1, 3);
    }

    public static void horizontalLine(int x1, int y1, int x2) {

        for (int k = x1; k < x2; k++) {
            arrayPicture[y1][k] = "*";
        }
        picture(y1);
        System.out.println();
    }

    public static void picture(int startIndex) {
        for (int i = startIndex; i < 5; i++) { // start from startIndex, not necessary 0 !
            for (int j = 0; j < 5; j++) {
                System.out.print(arrayPicture[i][j]);
            }
        }
    }
}

出力:

****                     
 ** 

y2(実際のコードでは使用されていないため、引数を削除しました)

于 2012-11-16T00:51:39.370 に答える