Java 如何打印二维数组?

Java 如何打印二维数组?,java,Java,我已经操纵了一个[20][20]二维数组。简单地说,我正在做一个海龟项目,用户输入指示,如向上画笔=0和向下画笔=1。当笔向下时,单个阵列位置,例如[3][4]标记为“1” 我的程序的最后一步是打印出20/20阵列。我不知道如何打印它,我需要将“1”替换为“X”。print命令实际上是父程序将调用的类中的一个方法。我知道我必须使用循环 public void printGrid() { System.out.println... } 您应该按行循环,然后按列循环,其结构如下 for .

我已经操纵了一个[20][20]二维数组。简单地说,我正在做一个海龟项目,用户输入指示,如向上画笔=0和向下画笔=1。当笔向下时,单个阵列位置,例如[3][4]标记为“1”

我的程序的最后一步是打印出20/20阵列。我不知道如何打印它,我需要将“1”替换为“X”。print命令实际上是父程序将调用的类中的一个方法。我知道我必须使用循环

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

您应该按行循环,然后按列循环,其结构如下

for ...row index...
  for ...column index...
    print
但我想这是家庭作业,你自己试试吧

交换for循环中的行/列索引,具体取决于您是否需要先遍历然后向下,而不是先遍历再遍历。

public void printGrid()
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();
   }
}
{ 对于(int i=0;i<20;i++) { 对于(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 replaceGrid()
{
对于(int i=0;i<20;i++)
{
对于(int j=0;j<20;j++)
{
如果(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();
   }
}
public void print和placegrid()
{
对于(int i=0;i<20;i++)
{
对于(int j=0;j<20;j++)
{
如果(a[i][j]==1)
a[i][j]=x;
System.out.printf(“%5d”,a[i][j]);
}
System.out.println();
}
}

我在另一个问题中回答了类似的问题

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

}

因为“X”是一个字符而不是int,所以实际上不能在矩阵本身中替换它,但是,下面的代码应该在遇到1时打印一个“X”字符

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");
    }
}
public void打印网格(int[][]in){
对于(int i=0;i<20;i++){
对于(int j=0;j<20;j++){
if(in[i][j]==1)
系统输出打印('X'+“\t”);
其他的
System.out.print(in[i][j]+“\t”);
}
系统输出打印(“\n”);
}
}

您可以使用实用程序mettod。数组。deeptoString()

如果您知道矩阵的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();
intnumdigits=(int)Math.log10(maxValue)+1;
if(numDigits=row.length-1){
buf.追加(“\n”);
}
}
}
返回buf.toString();
试试这个怎么样

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++;
    }
}
publicstaticvoidmain(字符串[]args)
{
int[]listwo=新int[5][5];
//二维阵列
int x=0;
int y=0;
而(x<5){
列表二[x][y]=(int)(Math.random()*10);
而(y
publicstaticvoidprintTwodimensionalArray(int[]]a){
for(int i=0;i

仅对于int数组

我也是一个初学者,我刚刚使用两个嵌套for循环成功地解决了这个问题

我看了这里的答案,它们对我来说有点先进,所以我想我应该分享我的答案,以帮助所有其他新手

另外,这是一个打鼹鼠的游戏,所以这个阵列被称为“鼹鼠栅格”

public static void printGrid() {
    for (int i = 0; i < moleGrid.length; i++) {
        for (int j = 0; j < moleGrid[0].length; j++) {
            if (j == 0 || j % (moleGrid.length - 1) != 0) {
                System.out.print(moleGrid[i][j]);
            }
            else {
                System.out.println(moleGrid[i][j]);
            }
         }
     }
}
publicstaticvoidprintgrid(){
对于(int i=0;i

希望有帮助!

更简单的方法是,使用Java5样式进行循环

Integer[][] twoDimArray = {{8, 9},{8, 10}};
        for (Integer[] array: twoDimArray){
            System.out.print(array[0] + " ,");
            System.out.println(array[1]);
        }

如何用x替换1?顺便说一句,不是家庭作业…我是一名40岁的IT专业人士(网络),一直对编程感兴趣,因此学习一些新的东西。只需检查正在运行中的角色(循环内部),如果它是“1”@Jack,则替换它-类似于
print(a[I][j]==1?'x:“”);
我可以在printGrid方法中替换吗?当然可以!在该方法中添加
如果
这应该可以打印。您可以添加制表符(“\t”或任何字符,根据您的喜好)在每个print语句的末尾分隔每个元素。
数组。deepToString
只打印一行2D数组,尽管它可能很有用,但这不是问题所在(网格)。我添加了一个非常小的改进:
%d\t”
public static void printGrid() {
    for (int i = 0; i < moleGrid.length; i++) {
        for (int j = 0; j < moleGrid[0].length; j++) {
            if (j == 0 || j % (moleGrid.length - 1) != 0) {
                System.out.print(moleGrid[i][j]);
            }
            else {
                System.out.println(moleGrid[i][j]);
            }
         }
     }
}
Integer[][] twoDimArray = {{8, 9},{8, 10}};
        for (Integer[] array: twoDimArray){
            System.out.print(array[0] + " ,");
            System.out.println(array[1]);
        }