-3

以下の文字出力の間にスペースを追加できるかどうかわかりませんが、私のコードは次のとおりです。

import java.util.*;
public class Slide{
    private char[][] cells;

    public Slide(){
        cells= new char[][]{//
            {'@','@','@','@'},
            {'@','@','@','@'},
            {'@','@','@','@'},
            {'@','@','@','@'}
        }; 

    }

    public Slide(char[][] cells){// 
        for(int row=0; row<cells.length; row++)
            for(int column = 0; column<cells[row].length; column++)

                this.cells = cells;
    }

    public void print(){

        for(char[] a: cells){
            System.out.println(a);//



        }


    }

}
4

1 に答える 1

3

配列はオーバーライドされないため、配列を直接出力することは、通常、やりたいことではありませんtoString。つまり、出力はほとんどのコンテキストで意味がありません。要素間にスペースを入れて印刷することだけに関心がある場合は、これで十分です。

for (char[] a : cells) {
    for (char c : a) {
        System.out.print(c);
        System.out.print(' ');
    }
    System.out.println();
}

Slideところで、2 番目のコンストラクターで何をしているのか (または何をしようとしているのか) はわかりません。あなたはたくさんの時間を割り当てthis.cellsているだけです。cellsのコピーを作成するつもりでしたcellsか?

this.cells = new char[cells.length][];  // create new empty array

for(int row = 0; row < cells.length; row++) {
    this.cells[row] = new char[cells[row].length];  // initialize row

    for(int column = 0; column < cells[row].length; column++)
        this.cells[row][column] = cells[row][column];  // copy elements
}
于 2013-09-24T23:38:15.323 に答える