我一直在苦苦挣扎。我被分配做一个程序,它接受用户的输入并输出相同的单词,但用星号编写,为此,我必须为字母表中的每个字母做一个数组。像这样:
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));
打印它
但我得到的输出是这样的,这只是数组的第一行
[[ , *, *, *, ], [*, , , , *], [*, *, *, *, *], [*, , , , *], [*, , , , *]]
我是否有必须添加到我已经拥有的println中的参数,还是我必须使用其他打印方法?
答案 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循环。