it-swarm-id.com

Java - mencetak array dua dimensi

Saya memiliki array dua dimensi [20] [20] yang telah saya manipulasi. Dalam beberapa kata saya sedang melakukan proyek kura-kura dengan memasukkan instruksi pengguna seperti pena atas = 0 dan pena turun = 1. Ketika pena turun lokasi array individu, misalnya [3] [4] ditandai dengan "1" .

Langkah terakhir program saya adalah mencetak array 20/20.

Saya tidak tahu cara mencetaknya dan saya harus mengganti "1" dengan "X"

Perintah cetak sebenarnya adalah metode di dalam kelas yang akan dipanggil oleh program induk ... Saya tahu saya harus menggunakan loop ... bantuan apa pun akan dihargai.

public void printGrid()
        {
            System.out.println...
        }
20
user997462
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();
   }
}

Dan untuk mengganti

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;
      }
   }
}

Dan Anda dapat melakukan ini semua sekaligus:

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();
   }
}
24
COD3BOY

anda dapat menggunakan 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));

}
36

Sesuatu seperti ini yang saya jawab di pertanyaan lain

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));
        }
    }

}
20

Bagaimana kalau mencoba ini?

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++;
    }
}
1
Helvijs

Nah, karena 'X' adalah char dan bukan int, Anda tidak bisa benar-benar menggantinya dalam matriks itu sendiri, namun, kode berikut harus mencetak char 'x' setiap kali menemukan 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");
    }
}
1
Wyatt915

Anda harus lingkaran demi baris dan kemudian kolom dengan struktur seperti

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

tapi saya rasa ini adalah pekerjaan rumah jadi coba saja sendiri.

Tukar indeks baris/kolom di dalam untuk loop tergantung pada apakah Anda harus melintasi terlebih dahulu dan kemudian turun, vs. turun terlebih dahulu dan kemudian menyeberang.

1
Jack
public static void printTwoDimensionalArray(int[][] a) {
    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length; j++) {
            System.out.printf("%d ", a[i][j]);
        }
        System.out.println();
    }
}

hanya untuk array int

0
kajibu

Jika Anda tahu maxValue (dapat dengan mudah dilakukan jika iterasi elemen lain tidak menjadi masalah) dari matriks, saya menemukan kode berikut lebih efektif dan generik.

    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();
0
ningsuhen