Я пытаюсь заполнить 2D-массив звездами по определенному шаблону, в частности, от левого нижнего до правого верхнего угла.
public static char[][] rightDiagonal (char star, int dimensions){
char [][] array = new char [dimensions][dimensions];
int last = dimensions - 1; // create variable for last number in array
// for loop to create right diagonal pattern
for (int i = 0; i < dimensions; i++){
for (int j = 0; j < dimensions; j++)
if (i == j)
array [i][last-i] = star;
else
array [i][j] = ' ';
}
return array;
Это то, что я пробовал, и лучший результат, который я получил, - это результат, который я разместил на изображении.
Я попробовал метод, который вы ранее описали, и это сработало. Я также попробовал то, что вы там изложили, и это тоже сработало. Я не супер звук на '?' Принцип и его использование. Похоже, что многие люди используют его, поэтому я начинаю искать больше информации о нем.
Вы привыкнете к этому. Это как мини ЕСЛИ..ИНАЧЕ.
Как ни странно, if
— это выражение в Котлине. Он делает то же самое, что и expression ? expression : expression
, но более удобочитаем. Это один из немногих случаев, когда Java, возможно, слишком лаконичен (и, конечно же, конструкция была взята из C, откуда и возникла большая часть синтаксиса Java).
Вы легко зацикливаетесь:
for (int i = размеры-1; i >= 0; i--) массив [i][i] = звезда;
Мне нужно иметь возможность оставить '' в других элементах, чтобы правильно отформатировать диаграмму
Предполагая, что вам нужен массив со звездами от нижнего левого до верхнего правого, попробуйте этот цикл. Он использует тернарный оператор, но вы можете придерживаться своего IF, если хотите.
for (int i = 0; i < dimensions; i++) {
for (int j = 0; j < dimensions; j++)
array[i][j] = (last-i == j ? '*' : ' ');
}
diagonal=dimension-1
for (int i=0; i<dimension; i++){
for (int j=0; j<dimension;j++) {
if (j==diagonal) {
array [i][j] = star;
diagonal --;
else array [i][j] = "_PUT HERE WATH YOU WANT OR LEAVE IT BLANK_"
}
}
попробуйте
array [i][j] = (last-i == j ? '*' : ' ');
вместо оператора If