打印具有顶部和左侧索引的2d数组

yuvru6vn  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(449)

我想创建2d数组,如下所示:

  1. 1 2 3 4 5 6 7 8 9 10
  2. A ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  3. B ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  4. C ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  5. D ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  6. E ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  7. F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  8. G ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  9. H ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  10. I ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  11. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

我试着这样做:

  1. public char[][] fillFieldWithWarFog() {
  2. char[] indices = " ABCDEFGHIJ".toCharArray();
  3. for (int row = 0; row < gameField.length; row++) {
  4. for (int i = 0; i < indices.length; i++) {
  5. gameField[row][0] = indices[i];
  6. }
  7. for (int col = 1; col < gameField[row].length; col++) {
  8. gameField[row][col] = '~';
  9. }
  10. }
  11. return this.gameField;
  12. }

但在第一个数组列中,我只有“j”值,而不是d等值。

  1. 1 2 3 4 5 6 7 8 9 10
  2. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  3. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  4. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  5. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  6. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  7. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  8. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  9. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  10. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  11. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  12. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

你能告诉我怎么修吗?

c2e8gylq

c2e8gylq1#

不清楚您是否希望列号作为数组的一部分。但是要打印带有索引的数组,可以这样做。

  1. public char[][] fillFieldWithWarFog() {
  2. char[] indices = "ABCDEFGHIJ".toCharArray();
  3. for (int row = 0; row < gameField.length; row++) {
  4. gameField[row][0] = indices[row];
  5. for (int col = 1; col < gameField[row].length; col++) {
  6. gameField[row][col] = '~';
  7. }
  8. }
  9. return this.gameField;
  10. }
  11. char[][] fog = fillFieldWithWarFog();
  12. for (int row = 0; row < fog.length; row++) {
  13. for (int col = 0; col < fog[row].length; col++) {
  14. System.out.printf(" %s", fog[row][col]);
  15. }
  16. System.out.println();
  17. }

印刷品

  1. A ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  2. B ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  3. C ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  4. D ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  5. E ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  6. F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  7. G ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  8. H ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  9. I ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  10. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
展开查看全部
qltillow

qltillow2#

准备要打印的数组-添加顶部和左侧索引:

  1. private static String printArray(char[][] arr, int d) {
  2. // line with digits above the field
  3. String title = " " + IntStream.range(1, d)
  4. .mapToObj(i -> (char) ('0' + i))
  5. .map(String::valueOf)
  6. .collect(Collectors.joining(" ")) + " " + d;
  7. // add letters to the left of each row of the field
  8. String field = IntStream.range(0, d)
  9. .mapToObj(i -> (char) ('A' + i) +
  10. String.valueOf(arr[i]).replace("", " "))
  11. .collect(Collectors.joining("\n"));
  12. return title + "\n" + field;
  13. }
  1. public static void main(String[] args) {
  2. int d = 10;
  3. char[][] field = new char[d][d];
  4. Arrays.stream(field).forEach(arr -> Arrays.fill(arr, '~'));
  5. System.out.println(printArray(field, d));
  6. }

输出:

  1. 1 2 3 4 5 6 7 8 9 10
  2. A ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  3. B ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  4. C ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  5. D ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  6. E ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  7. F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  8. G ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  9. H ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  10. I ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  11. J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
展开查看全部

相关问题