打印阵列没有分隔符

时间:2015-08-16 01:17:21

标签: java arrays printing

我一直在苦苦挣扎。我被分配做一个程序,它接受用户的输入并输出相同的单词,但用星号编写,为此,我必须为字母表中的每个字母做一个数组。像这样:

String A [][]= new String [5][5];

        A[0][0]=" ";
        A[0][1]= "*";
        A[0][2]="*";
        A[0][3]="*";
        A[0][4]=" ";
        A[1][0]="*";
        A[1][1]=" ";
        A[1][2]=" ";
        A[1][3]=" ";
        A[1][4]="*";
        A[2][0]="*";
        A[2][1]="*";
        A[2][2]="*";
        A[2][3]="*";
        A[2][4]="*";
        A[3][0]="*";
        A[3][1]=" ";
        A[3][2]=" ";
        A[3][3]=" ";
        A[3][4]="*";
        A[4][0]="*";
        A[4][1]=" ";
        A[4][2]=" ";
        A[4][3]=" ";
        A[4][4]="*";

我一直在尝试打印它们,看看它完成之后会怎么样,我一直试图用System.out.println(Arrays.deepToString(A));打印它 但我得到的输出是这样的,这只是数组的第一行

[[ , *, *, *,  ], [*,  ,  ,  , *], [*, *, *, *, *], [*,  ,  ,  , *], [*,  ,  ,  , *]]

而不是像这样: enter image description here

我是否有必须添加到我已经拥有的println中的参数,还是我必须使用其他打印方法?

3 个答案:

答案 0 :(得分:2)

Arrays.deepToString的行为与预期不符。

它的作用是递归打印数组的每个数组,因此deep字。

这里有一部分javadoc,它的内容非常清晰:

  

字符串表示由数组元素的列表组成,   用方括号括起来(" []")。相邻的元素是分开的   人物"," (逗号后跟空格)。元素是   通过String.valueOf(Object)转换为字符串,除非它们是   他们自己的数组。

您可以使用for循环轻松打印您想要的内容:

for (String[] A1 : A) {
    for (String A2 : A1) 
        System.out.print(A2);

    System.out.println();
} 

答案 1 :(得分:1)

正如@ Jean-FrançoisSavard所说,Arrays.deepToString在数组末尾不支持newline

但在Java8中,您可以使用stream来缩短代码:

Arrays.stream(A).forEach(t -> System.out.println(String.join(" ", t)));

答案 2 :(得分:0)

做一个双循环。例如:

for(int i=0; A.length; i++){
    for(int j=0; A[i].length; j++)
        System.out.print(A[i][j]);
     System.out.println();
}

如果这不起作用,只需在

中切换i和j变量
System.out.print(A[i][j]);

使用deepToString()方法时,它会将数组放入您收到的格式中。如果您只想要原始数据,那么您可以使用我向您展示的方法,使用for循环。