Java - печать двухмерного массива
У меня есть двумерный массив [20] [20], которым я манипулировал. В нескольких словах я делаю проект черепахи с инструкциями ввода пользователем, такими как pen up = 0 и pen down = 1. Когда перо не работает в отдельном местоположении массива, например [3] [4], помечено знаком "1",.
Последний шаг моей программы - распечатать массив 20/20.
Я не могу понять, как его распечатать, и мне нужно заменить "1" на "X"
Команда print на самом деле является методом внутри класса, который вызывается родительской программой... Я знаю, что мне нужно использовать цикл... любая помощь будет оценена.
public void printGrid()
{
System.out.println...
}
Ответы
Ответ 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();