Массив пропускает пустую позицию при отображении результата? - PullRequest
0 голосов
/ 05 сентября 2018

Я пытался создать треугольник Флойда, который выглядит следующим образом.

1
2 3
4 5 6
7 8 9 10

но во время практики я набрал опечатку и с помощью этого кода создал треугольник другого вида

class Main {
    public static void main(String[] args) {
        int value=1;
        int[][] arr = new int[4][4];
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++) {

                if( i<=j ){
                    System.out.print(value+" ");
                    value++;
                }
            }System.out.println();
        }

    }
}

и распечатал это,

1 2 3 4                                                                                                                                        
5 6 7                                                                                                                                          
8 9                                                                                                                                            
10

Теперь мой вопрос заключается в том, что, читая о массивах, я прочитал, что печатается конкретное значение в определенной позиции.

Так что, если это так, то вывод этого кода должен быть таким,

[1][2][3][4]
[x][5][6][7]
[x][x][8][9]
[x][x][x][10]

Массив пропускает эти пустые поля при отображении результата? Пожалуйста, помогите понять это

Ответы [ 4 ]

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

Нет, как сказал @thath другой парень, это условие if пропускается. Попробуйте эту программу -

public class MyClass {

    public static void main(String args[]) {
        int value=1;
        int[][] arr = new int[4][4];
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++) {

                if( i<=j ){
                    System.out.print(value+" ");
                    System.out.print("\t");
                    value++;
                } else {
                    System.out.print(0);
                    System.out.print("\t");
                }
            }System.out.println();
        }

    }
}

Это напечатано -

1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 10

ПРИМЕЧАНИЕ. - В программе нет использования arr.

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

Боюсь, что в условии есть ошибка. Должно быть наоборот:

            if( j <= i ){
                System.out.print(value+" ");
                value++;
            }

Полагаю, было бы проще, если бы вы перестали использовать искусственные i s и j s и начали использовать row и column .

Однако обратите внимание, что в Java вы создаете не двумерные массивы, а массив массивов любого размера и любого размера.

PS. Вы все равно не используете массив во внутреннем цикле.

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

Он будет печатать 0 как 0, потому что, когда массив инициализируется, все значения устанавливаются в ноль, и если вы печатаете, они будут печататься так. Вот ссылка

Что такое инициализация массива по умолчанию в Java?

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

Нет, эти значения не пропускаются массивом.

Они пропущены, потому что вы написали код, пропускающий их в виде этого условия:

      if( i<=j ){
          System.out.print(value+" ");
          value++;
      }

Если вы удалите условие, будут напечатаны все 16 значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...