Я решил эту проблему, установив yum -y install gtk3-devel gtk3-devel-docs
", он работает нормально
Моя работа env:
Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level
До: [/g0] [/g1]
После: [/g2] [/g3]
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
Получил?
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}
Привет, я попытаюсь объяснить, что происходит в этом фрагменте кода
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] + " ");
}
}
, именно поэтому вы получаете вывод, который вы получаете
взгляните на мой ответ здесь: Почему я не получаю вывод, которым я должен быть?
в любом случае ... ответ прост ... в первый цикл, напечатайте свой массив, и вы увидите, что происходит с вашим массивом примерно так:
for (int i = 1; i < list.length; i++){
list[i] = list[i - 1];
System.out(list);
}
Выход 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
Я надеюсь, что это поможет вам понять, что игры здесь играют немного лучше. Удачи вам в оставшейся части вашего теста!
Если вы новичок в программировании, отладка печати может стать отличным способом узнать, что происходит в вашей программе. Я поставил кучу инструкций печати в вашей программе, попробуйте запустить ее и посмотреть, можете ли вы понять результаты:
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
blockquote>
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: Попытайтесь понять шаг за шагом в своем коде, прежде чем задавать вопрос.
Это все из-за этого цикла,
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
Как кто-то отправил, ваш 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] + " ");
}