1

2次元配列を使用して長方形を印刷するこのコードがあります。ご覧のとおり、ループを使用する代わりに配列全体を手作業でコーディングしました。私が探しているのは:

  1. ループを使用してまったく同じ長方形を印刷する方法 (星、マイナスなど)
  2. このテンプレートが作成された後、配置したい場合は、文字「?」としましょう。長方形の内側で、たとえば、座標タブ [5] [4] を呼び出すと、それが印刷されます。

問題は、「?」の列全体です。テンプレートの外側に印刷されます。どうすればこれを修正できますか?

注: Java の Swing または AWT ライブラリは使用したくありません。

public class HelloWorld{

 public static void main(String []args){
char [][] tab= {
    {'*', '-', '-', '-', '-','*'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'+', ' ',  ' ',  ' ', ' ',  '+'},
    {'*', '-', '-', '-', '-','*'}


};
int row=8;
int col=6;
for (int i=0; i< row; i++){
    for(int j=0; j< col; j++){
        System.out.print(tab[i][j]+" ");

    }
    System.out.print(tab[5][4]='?');
    System.out.println("");

}

これは私の出力です:

* - - - - - * ?
+           + ?
+           + ?
+           + ?
+           + ?
+        ?  + ?
+           + ?
* - - - - - * ?

ご協力いただきありがとうございます

4

2 に答える 2

1

次のように行うことができます - 適切なサイズの配列を宣言し、' ' で埋めます:

final int row=8;
final int col=6;
char[][] tab = new char[row][col];
for (int i=0; i< row; i++){
    for(int j=0; j< col; j++){
        tab[i][j] = ' ';
    }
}

角に星を配置します。

tab[0][0] = '*';
tab[0][col-1] = '*';
tab[row-1][0] = '*';
tab[row-1][col-1] = '*';

最初と最後の行の場合:

for (int i=1; i<col-1; i++) {
    tab[0][i] = '-';
    tab[row-1][i] = '-';
}

そして、他のすべての行について:

for (int i=1; i < row-1; i++) {
    tab[i][0] = '+';
    tab[i][col-1] = '+';
}

これで「?」を配置できます。好きな場所に配置して、配列を印刷します。

于 2016-10-16T13:53:45.617 に答える
0

まず、リファクタリングされたコードが表示されます。ここで行っているようにマトリックスに何かを連結すると、System.out.print(tab[i][j]+" ");まったく同じマトリックスが出力されません。

2 番目のポイント、この行System.out.print(tab[5][4]='?');は外部 for ループの内側にあるため、マトリックスの外側に出力するのはこのためです。

コードをデバッグすると、何が起こっているのかがわかります。リファクタリングおよび修正されたバージョンは次のとおりです。

public class NewOne {

    public static void main(String[] args) {
        char[][] tab = { { '*', '-', '-', '-', '-', '*' }, 
                         { '+', ' ', ' ', ' ', ' ', '+' },
                         { '+', ' ', ' ', ' ', ' ', '+' }, 
                         { '+', ' ', ' ', ' ', ' ', '+' }, 
                         { '+', ' ', ' ', ' ', ' ', '+' },
                         { '+', ' ', ' ', ' ', ' ', '+' }, 
                         { '+', ' ', ' ', ' ', ' ', '+' },
                         { '*', '-', '-', '-', '-', '*' }

        };
        printArray(tab);
        // then we change a value
        tab[5][4] = '?';
        printArray(tab);
    }

    /**
     * this Method Prints any given matrix
     * 
     * @param tab a char matrix
     */
    private static void printArray(char[][] tab) {
        for (int i = 0; i < tab.length; i++) {
            for (int j = 0; j < tab[i].length; j++) {
                System.out.print(tab[i][j]);
            }
            System.out.println();
        }
    }
}
于 2016-10-16T13:17:08.140 に答える