Как заполнить 2D-массив снизу слева вверх справа в java?

Я пытаюсь заполнить 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;

Это то, что я пробовал, и лучший результат, который я получил, - это результат, который я разместил на изображении.

попробуйте array [i][j] = (last-i == j ? '*' : ' '); вместо оператора If

yacc 09.04.2023 23:46

Я попробовал метод, который вы ранее описали, и это сработало. Я также попробовал то, что вы там изложили, и это тоже сработало. Я не супер звук на '?' Принцип и его использование. Похоже, что многие люди используют его, поэтому я начинаю искать больше информации о нем.

GrasshopperAtBest 09.04.2023 23:55

Вы привыкнете к этому. Это как мини ЕСЛИ..ИНАЧЕ.

yacc 10.04.2023 00:03

Как ни странно, if — это выражение в Котлине. Он делает то же самое, что и expression ? expression : expression, но более удобочитаем. Это один из немногих случаев, когда Java, возможно, слишком лаконичен (и, конечно же, конструкция была взята из C, откуда и возникла большая часть синтаксиса Java).

Maarten Bodewes 10.04.2023 01:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы легко зацикливаетесь:

for (int i = размеры-1; i >= 0; i--) массив [i][i] = звезда;

Мне нужно иметь возможность оставить '' в других элементах, чтобы правильно отформатировать диаграмму

GrasshopperAtBest 09.04.2023 23:53
Ответ принят как подходящий

Предполагая, что вам нужен массив со звездами от нижнего левого до верхнего правого, попробуйте этот цикл. Он использует тернарный оператор, но вы можете придерживаться своего 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_"
    }
 }
    

Другие вопросы по теме