Подтвердить что ты не робот

Java - печать двухмерного массива

У меня есть двумерный массив [20] [20], которым я манипулировал. В нескольких словах я делаю проект черепахи с инструкциями ввода пользователем, такими как pen up = 0 и pen down = 1. Когда перо не работает в отдельном местоположении массива, например [3] [4], помечено знаком "1",.

Последний шаг моей программы - распечатать массив 20/20.

Я не могу понять, как его распечатать, и мне нужно заменить "1" на "X"

Команда print на самом деле является методом внутри класса, который вызывается родительской программой... Я знаю, что мне нужно использовать цикл... любая помощь будет оценена.

public void printGrid()
        {
            System.out.println...
        }
4b9b3361

Ответ 1

public void printGrid()
{
   for(int i = 0; i < 20; i++)
   {
      for(int j = 0; j < 20; j++)
      {
         System.out.printf("%5d ", a[i][j]);
      }
      System.out.println();
   }
}

И заменить

public void replaceGrid()
{
   for (int i = 0; i < 20; i++)
   {
      for (int j = 0; j < 20; j++)
      {
         if (a[i][j] == 1)
            a[i][j] = x;
      }
   }
}

И вы можете сделать это за один раз:

public void printAndReplaceGrid()
{
   for(int i = 0; i < 20; i++)
   {
      for(int j = 0; j < 20; j++)
      {
         if (a[i][j] == 1)
            a[i][j] = x;
         System.out.printf("%5d ", a[i][j]);
      }
      System.out.println();
   }
}

Ответ 2

вы можете использовать mettod Utility. Arrays.deeptoString();

 public static void main(String[] args) {
    int twoD[][] = new int[4][]; 
    twoD[0] = new int[1]; 
    twoD[1] = new int[2]; 
    twoD[2] = new int[3]; 
    twoD[3] = new int[4]; 

    System.out.println(Arrays.deepToString(twoD));

}

Ответ 3

Что-то вроде этого, что я отвечаю в другом вопросе

public class Snippet {
    public static void main(String[] args) {
        int [][]lst = new int[10][10];

        for (int[] arr : lst) {
            System.out.println(Arrays.toString(arr));
        }
    }

}

Ответ 4

Вы должны делать петли по строкам, а затем столбцы со структурой вроде

for ...row index...
  for ...column index...
    print

но я думаю, что это домашняя работа, поэтому просто попробуйте сами.

Переведите индекс строки/столбца в циклы for в зависимости от того, нужно ли вам сначала переходить, а затем вниз, сначала против вниз, а затем через.

Ответ 5

Ну, так как "X" - это char, а не int, вы фактически не можете заменить его в самой матрице, однако следующий код должен печатать "x" char, когда он встречается с символом 1.

public void printGrid(int[][] in){  
    for(int i = 0; i < 20; i++){  
        for(int j = 0; j < 20; j++){  
            if(in[i][j] == 1)  
                System.out.print('X' + "\t");
            else
                System.out.print(in[i][j] + "\t");
        }
        System.out.print("\n");
    }
}

Ответ 6

Как насчет этого?

public static void main (String [] args)
{
   int [] [] listTwo = new int [5][5];
    // 2 Dimensional array 
    int x = 0;
    int y = 0;
    while (x < 5) {
        listTwo[x][y] = (int)(Math.random()*10);

        while (y <5){
            listTwo [x] [y] = (int)(Math.random()*10);
            System.out.print(listTwo[x][y]+" | ");
            y++;                
        }
        System.out.println("");
        y=0;
        x++;
    }
}

Ответ 7

Если вы знаете maxValue (может быть легко сделано, если другая итерация элементов не является проблемой) матрицы, я считаю следующий код более эффективным и универсальным.

    int numDigits = (int) Math.log10(maxValue) + 1;
    if (numDigits <= 1) {
        numDigits = 2;
    }
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < matrix.length; i++) {
        int[] row = matrix[i];
        for (int j = 0; j < row.length; j++) {
            int block = row[j];
            buf.append(String.format("%" + numDigits + "d", block));
            if (j >= row.length - 1) {
                buf.append("\n");
            }
        }
    }
    return buf.toString();