Как напечатать значения массива в одной строке, а не в последовательности - PullRequest
0 голосов
/ 16 сентября 2018

Это из главы 10, проблема 10 моей книги «Искусство и наука о Java» из Стэнфорда (я полный рабочий день, изучаю введение в методологию программирования с использованием Java в свое свободное время [Python - моя настоящая цель для будущие медицинские исследовательские проекты], так что я кровавый новичок). У меня нет наставников в программировании, и я хотел бы вашей помощи.

Упражнение: введите строку в массив. Я решил проблему с заполнением массива.

Проблема: я заполнил свой 2-мерный массив данными, нет проблем, но как мне распечатать результаты массива подряд, чтобы он выглядел как доска для шашек? «b» означает «черные» шашки на половине доски.

Вывод должен быть:

 b b b b 
b b b b
 b b b b
etc....

Все мои p печатаются в 1 столбце, а не подряд, это вывод и моя проблема:

б

б

б

б

б

и т.д ...

Мой код:

public void run() {
setFont("Helvetica-40");

displayCheckerboard(setBoard());    

}

private String[][] setBoard() {


for (int row = 0; row<8; row++) {

for (int col =0; col<8; col++) {

    if (row == 0 && col %2 ==0) {

     cBoard[row][col]= "  ";

        } else if (row==0 && col%2!=0) {
        cBoard[row][col]= "b";

        }else if (row==1 && col %2!=0) {
                cBoard[row][col]= "  ";
        }  else if (row==1 && col%2==0) {
            cBoard[row][col]= "b";

        } else if (row ==2&& col%2 !=0) {
            cBoard[row][col]= "b";
        } else if( row == 2 && col%2 ==0) {
                cBoard[row][col]= "  ";
        } else if (row ==3&& col%2 ==0) {
            cBoard[row][col]= " -";
        } else if( row == 3 && col%2!=0) {
                cBoard[row][col]= "  ";
        }
        //....continue here if code works...
    }

}
return cBoard;
}

private void displayCheckerboard(String board[][]) {

for (int row=0; row<8; row++) {
    for (int col=0;col<8; col++) {
        print(board[row][col]);

    }

    }

}

String cBoard[][] = new String[8][8];

}

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Возможно, вы используете System.out. println (), который печатает новую строку каждый раз, когда вы ее вызываете.Если вы хотите печатать несколько раз без новой строки для каждой строки, используйте System.out. print () Таким образом, вы можете написать свою программу как

for (int row=0; row<8; row++) {
for (int col=0;col<8; col++) {
    System.out.print(board[row][col]);
    }
System.out.println()     //go to next line after every row
}
0 голосов
/ 16 сентября 2018

Идея - сохранить все значения в строковой переменной, когда вы закончите, вы распечатаете строку. Для каждой итерации внутреннего цикла полученное значение будет добавлено к строковой переменной str . Это бы сработало.

String str ="";

for (int row=0; row<8; row++) {
    for (int col=0;col<8; col++) {
        str += "  "+board[row][col];
    }
     print(str); // prints values in row
}
...