Задачу решила только с подсказками.
Напишите пожалуйста построчный комментарий что за чем мы делаем. Я совсем ничего не поняла. Откуда взялась переменная string [i], как она потом распределилась по ячейкам 1-5, и.т.д.
Также у меня проблема при выводе. Вместо русских символов выводит нечитаемые знаки. С чем это может быть связано.
Заранее спасибо!
public class Solution {
public static final String ODD = "Нечетный";
public static final String EVEN = "Чётный";
public static String[] strings = new String[5];
public static void main(String[] args) {
for(int i=0;i<5;i++)
{
if(i%2==0)
strings[i]=EVEN;
else
strings[i]=ODD;
}
System.out.print("index = 0");
System.out.println(" value = " + strings[0]);
System.out.print("index = 1");
System.out.println(" value = " + strings[1]);
System.out.print("index = 2");
System.out.println(" value = " + strings[2]);
System.out.print("index = 3");
System.out.println(" value = " + strings[3]);
System.out.print("index = 4");
System.out.println(" value = " + strings[4]);
![]()
Elena
2 уровень
Помогите пожалуйста .
Решен
Комментарии (14)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ramil.kz
23 августа 2022, 11:10полезный
1) Откуда взялась переменная string[i] - public static String[] strings = new String[5];
2) как она потом распределилась по ячейкам 1-5 - for(int i=0;i<5;i++) - int i=0; //Объявляется переменная i;
i<5; //пока i меньше 5 цикл выполняется;
i++ // i увеличивается на 1 каждую итерацию (i++ = i+1)
+10
hidden #598481
22 августа 2022, 08:10полезный
По поводу кодировки - открой настройки (Ctrl+Shift+S) и покажи настройки кодировки (см. скриншот)
![]()
+1
Elena
23 августа 2022, 10:52
0
Стас ПасинковSoftware Developer в ZipyMaster
23 августа 2022, 19:12
нашли одно отличие? :)
0
Elena
24 августа 2022, 03:10
Таких значений у меня нет. Попробовала поставить другие, но это мне не помогло.
![]()
0
Elena
24 августа 2022, 03:33
В итоге разобралась. Выставила другие настройки. Спасибо, что подсказали где искать.
![]()
0
Стас ПасинковSoftware Developer в ZipyMaster
24 августа 2022, 10:34
я вам рекомендую все в UTF-8 проставить.
иначе еще не раз будете иметь проблемы с кодировками
то, что задача изначально была выкачана в виндовой кодировке - ну то такое. можно было просто забить что вот именно она с проблемами с кодировкой ради того, чтобы все дальнейшие задачи были в нормальной кодировке
+1
hidden #598481
22 августа 2022, 08:07
strings - это массив строк, он у тебя создан в 6 строке:
i - это число, которое меняется в цикле в диапазоне от нуля до четырёх включительно.
strings[i] - это обращение к i-тому элементу массива. Таким образом, перебирая в цикле значения i, ты обращаешься по очереди к разным элементам массива и присваиваешь каждому из них одно из двух значений, в зависимости от того, чётное или нечётное текущее значение i.
+5
Elena
23 августа 2022, 10:48
Извините, ничего не поняла. Как массив связывается с циклом. Как элементу массиву присваивается значение из цикла. Как они связываются?
+1
hidden #598481
23 августа 2022, 12:16
Как массив связывается с циклом
Напрямую никак. В цикле мы просто создаём переменную i, равную нулю, и последовательно меняем ей значения, пока i < 5. Когда условие перестаёт выполняться, то есть когда i достигает значения, равного 5, цикл прерывается.
То есть изначально i и массив strings никак не связаны.
Но массив strings имеет длину, тоже равную 5, а это означает, что его элементы имеют индексы 0, 1, 2, 3, 4 - то есть 5 чисел, начиная с нуля. А чтобы обратиться к элементу массива, нужно написать имя массива и указать в квадратных скобках индекс этого элемента: strings[0] - это нулевой элемент массива, strings[1] - следующий и т.д. Последний элемент массива будет иметь индекс 4. Как и число i, про которое я говорил выше, будет изменяться в диапазоне от 0 до 4 включительно, потому что так указано в условии цикла:
В совокупности эти два факта позволяют нам понять, что число i можно использовать в качестве индекса для обращения к элементам массива: когда i равно нулю, запись strings[i] означает strings[0]; на следующем шаге, когда i равно 1, запись strings[i] означает strings[1] и так далее. Ведь при выполнении программа вместо каждой переменной подставляет значение этой переменной, чтобы производить вычисления. Поэтому пока выполняется цикл, переменная i меняет свои значения, и поэтому на каждой итерации цикла запись на strings[i] ссылается на следующий элемент массива.
Ещё небольшое уточнение. Более корректным было бы в цикле вместо "i < 5" писать "i < strings.length". При выполнении программы получится то же самое, а при написании это будет более правильно. .length - это специальная величина, которая есть у каждого массива, и она всегда равна его длине. То есть если в массиве 5 элементов, то она равна 5, а если 10, то 10 и т.д.
+20
Elena
24 августа 2022, 02:54
Примерно поняла. Т.е получается, что при каждом новом выполнении цикла индекс массива повышается (переходит на следующий) на один?
+1
hidden #598481
24 августа 2022, 08:43полезный
Да.
Семантика цикла for такая:
for ( команда перед началом цикла ; условие продолжения цикла ; действие после каждой итерации )
В данном случае сначала создаётся переменная i равная нулю, и мы готовы к первой итерации цикла. Выполняем проверку, что i < 5, т.е. 0 < 5 - это истина, значит начинаем выполнять тело цикла. После выполнения тела цикла выполняем команду i++, это то же самое, что i = i + 1, то есть к прошлому значению i (нулю) прибавляется единица и полученное значение записывается в переменную i. Таким образом i каждый раз увеличивается на 1.
Затем снова выполняется проверка i < 5 и пока она истинная, цикл будет выполняться аналогичным образом.
После пятого выполнения i увеличится с 4 до 5 и проверка 5 < 5 станет ложной. На этом цикл завершится, переменная i сотрётся из памяти, и выполнение программы пойдёт после цикла.
+19
Elena
24 августа 2022, 09:50
Спасибо большое за объяснение.
0
Anonymous #3346123
30 сентября 2023, 12:52
Как массив связывается с циклом ?
1.public static String[] strings = new String[5]; - здесь [5] это кол-во ячеек, (размер/длина массива)
strings[i] - например [4] здесь это индекс \ номер ячейки в массиве, то есть общности нет.
2. О цикле: for(int i=0;i<5;i++) //// здесь буква " i"
{ if(i%2==0) strings[i]=EVEN; //// здесь буква " i"
else strings[i]=ODD; } //// и здесь буква " i"
strings есть переменная массива и таким образом повязаны кровно индексы ячеек и номера цикла буквой " i". Могли быть повязаны и другой буквой, всё едно.
И таки да, размер массива должен совпадать с количеством итераций в цикле, с учетом того, что итерации считаются от "0" и ячейки также считаются от "0".
+1