Java – 打印二维数组
我有一个[20] [20]二维数组,我操纵过。 简而言之,我正在做一个乌龟项目,用户输入指令,如笔向上= 0和笔向下= 1.当笔向下时,单个arrays位置,例如[3] [4]标记为“1” 。
我的程序的最后一步是打印出20/20数组。
我无法弄清楚如何打印它,我需要用“X”替换“1”
print命令实际上是父类程序将调用的类中的一个方法…我知道我必须使用循环…任何帮助将不胜感激。
public void printGrid() { System.out.println... }
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(); } }
你可以使用Utility mettod。 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)); }
我在另一个问题中回答这样的事情
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)); } } }
您应该按行循环,然后使用类似结构的列循环
for ...row index... for ...column index... print
但我想这是功课,所以请亲自尝试一下。
在for循环中交换行/列索引,具体取决于您是先需要先关闭,然后再先关闭,先关闭然后再关闭。
好吧,既然’X’是一个char而不是一个int,你实际上不能在矩阵本身中替换它,但是,下面的代码应该在遇到1时打印一个’x’char。
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 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++; } }
如果您知道矩阵的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();