Простой массив, неопределенность с выходом [дубликат]

Я решил эту проблему, установив yum -y install gtk3-devel gtk3-devel-docs ", он работает нормально

Моя работа env:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

До: enter image description here [/g0] enter image description here [/g1]

После: enter image description here [/g2] enter image description here [/g3]

3
задан RubioRic 6 April 2016 в 05:35
поделиться

9 ответов

for (int i = 1; i < list.length; i++)
      list[i] = list[i - 1];

эквивалентно:

list [1] = list [1-1] = list [0] = 1 list [2] = list [2-1] = list [1 ] = 1 список [3] = список [3-1] = список [2] = 1 список [4] = список [4-1] = список [3] = 1 список [5] = список [5-1] = list [4] = 1

Получил?

1
ответ дан Coder 25 August 2018 в 23:42
поделиться
int list[] = {1, 2, 3, 4, 5, 6}; 

 for (int i = 1; i < list.length; i++) {
         list[i] = list[i - 1];
 }

Когда i равно 1, вы назначаете list[1] = list[0], здесь список [0] равен 1

Затем массив обновляется {1, 1, 3, 4, 5, 6}, снова петля

Когда i - 2, вы назначаете list[2] = list[1], здесь значение [1]: 1

Затем обновляется массив {1, 1, 1, 4, 5, 6}, снова цикл

Таким образом, массив переопределяет {1, 1, 1, 1, 1, 1}

0
ответ дан Alice 25 August 2018 в 23:42
поделиться

Привет, я попытаюсь объяснить, что происходит в этом фрагменте кода

public class Test { 
  public static void main(String[] args) {
    int list[] = {1, 2, 3, 4, 5, 6};

Эта строка эквивалентна следующему коду

    int list[] = new int[6];
    list[0] = 1;
    list[1] = 2;
    list[2] = 3;
    list[3] = 4;
    list[4] = 5;
    list[5] = 6;


    for (int i = 1; i < list.length; i++)
      list[i] = list[i - 1];

, этот цикл является эквивалентным следующего кода

    list[1] = list[0];
    list[2] = list[1];
    list[3] = list[2];
    list[4] = list[3];
    list[5] = list[4];

, который, поскольку list[0] = 1 является эквивалентом следующего

    list[1] = 1;
    list[2] = 1;
    list[3] = 1;
    list[4] = 1;
    list[5] = 1;


    for (int i = 0; i < list.length; i++)
      System.out.print(list[i] + " ");
  }
}

, именно поэтому вы получаете вывод, который вы получаете

0
ответ дан BevynQ 25 August 2018 в 23:42
поделиться

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

в любом случае ... ответ прост ... в первый цикл, напечатайте свой массив, и вы увидите, что происходит с вашим массивом примерно так:

for (int i = 1; i < list.length; i++){
          list[i] = list[i - 1];
          System.out(list);
}
0
ответ дан Community 25 August 2018 в 23:42
поделиться

Выход 1 1 1 1 1 1, потому что первый оператор for выполняет цикл по массиву, названный list, значений (т. е. {1, 2, 3, 4, 5, 6}) и заменяя каждый на предыдущий, начиная со второго ( index 1 или, как некоторые говорят, 1-й, где «реальный» первый является 0-м ... я отвлекаюсь). Таким образом, текущее значение пункта 2 (индекс 1) второго элемента (2) заменяется на значение 1-го (индекс 0), которое равно 1: (list[i] = list[i - 1];, где i = 1). Это продолжается по массиву целых чисел, пока мы не достигнем конца list. По мере того как мы заменяем каждое значение на предыдущий, все они в конечном итоге становятся одним и тем же значением - значением первого элемента в массиве, который является 1. В конце мы имеем это значение для нашего list: {1, 1, 1, 1, 1, 1}.

Следующий оператор for просто распечатывает каждое значение обновленного list по очереди, за которым следует пустое пространство: System.out.print(list[i] + " ");. Итак, как вы можете видеть, результатом запуска этого кода является то, что он выводит 1 1 1 1 1 1.

Просто для того, чтобы вести точку дома более визуально, давайте просто нарисуем значения параметра list с течением времени:

int i = 1;              // i = 1
list[i] = list[i - 1];  // list[1] = list[1 - 1]; list[0] == 1
                        // list is now {1, 1, 3, 4, 5, 6}

i++;                    // i = i + 1 # i is now 2
list[i] = list[i - 1];  // list[2] = list[2 - 1]; list[1] == 1
                        // list is now {1, 1, 1, 4, 5, 6}

i++;                    // i = i + 1; i = 3
list[i] = list[i - 1];  // list[3] = list[3 - 1]; list[2] == 1
                        // list is now {1, 1, 1, 1, 5, 6}

i++;                    // i = i + 1; i = 4
list[i] = list[i - 1];  // list[4] = list[4 - 1]; list[3] == 1
                        // list is now {1, 1, 1, 1, 1, 6}

i++;                    // i = i + 1; i = 5
list[i] = list[i - 1];  // list[5] = list[5 - 1]; list[4] == 1
                        // list is now {1, 1, 1, 1, 1, 1}

i++;                    // i = i + 1; i = 6
i < list.length;        // i == 6; list.length == 6; 6 < 6 == false
                        // exit the for loop

Я надеюсь, что это поможет вам понять, что игры здесь играют немного лучше. Удачи вам в оставшейся части вашего теста!

1
ответ дан Dallas Reedy 25 August 2018 в 23:42
поделиться

Если вы новичок в программировании, отладка печати может стать отличным способом узнать, что происходит в вашей программе. Я поставил кучу инструкций печати в вашей программе, попробуйте запустить ее и посмотреть, можете ли вы понять результаты:

public class Test { 
    public static void main(String[] args) {
        int list[] = {1, 2, 3, 4, 5, 6};

        for (int i = 1; i < list.length; i++) {
          System.out.println("\n\n\nloop number " + i);
          System.out.println("\ni = " + i);
          System.out.println("\nThe value at list[i] = " + list[i]);
          System.out.println("\ni - 1 = " + (i - 1));
          System.out.println("\nSo I'm accessing element " + (i - 1) +
            " in the list for this iteration.");
          System.out.println("\nThe value at list[i - 1] = " + list[i - 1]);
          System.out.println("\nEnd of loop " + i);
          list[i] = list[i - 1];
        }

        for (int i = 0; i < list.length; i++)
          System.out.print(list[i] + " ");
    }
}

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

. Вы получите что-то вроде этого для каждой итерации цикла в консоли, он проведет вас через то, что значения:

loop number 1

i = 1

Значение в списке [i] = 2

i - 1 = 0

Итак, я обращаюсь к элементу 0 в списке для этой итерации.

Значение в списке [i-1] = 1

Конец цикла 1

0
ответ дан Daniel.Schroeder 25 August 2018 в 23:42
поделиться
for (int i = 1; i < list.length; i++)
          list[i] = list[i - 1];

Эта часть вашего кода вызывает значение всех элементов в списке: 1.

When i = 1, list[1] = list[0] = 1;
when i = 2, list[2] = list[1] = 1; //not 2 because it is already overrided when i = 1.

.... для последнего.

P / S: Попытайтесь понять шаг за шагом в своем коде, прежде чем задавать вопрос.

0
ответ дан htpvl 25 August 2018 в 23:42
поделиться

Это все из-за этого цикла,

for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];

. Что случилось, ваше первое значение - 1. В соответствии с циклом он присваивает это значение соответствующему второму элементу list Массив.

Это означает, что если ваш список должен иметь 10 в качестве первого элемента массива, подобного этому

int list[] = {10, 2, 3, 4, 5, 6};

Он будет печатать 10,10,10,10,10,10

0
ответ дан Shree Krishna 25 August 2018 в 23:42
поделиться

Как кто-то отправил, ваш for-loop вызывает этот результат (11111). Вы также упоминали, что ваш вопрос будет выглядеть так: «Он хранит значения в массиве?». Для лучшего понимания вашего вопроса, вы пытаетесь получить значения из массива и сохранить их в другом массиве. Если это так, это может быть одним из вариантов.

public static void main(String []args){
        int[] list = {1, 2, 3, 4, 5, 6};
        int[] myList = new int[list.length];
        for (int i=0; i<list.length; i++){
            myList[i] = list[i];
        }
        for (int i = 0; i < list.length; i++)
          System.out.print(myList[i] + " ");
     }
0
ответ дан Tung Le 25 August 2018 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: