цикл for будет циклически проходить через набор данных, например, массив. Классика для цикла выглядит следующим образом:
for(counter=0;counter <= iterations;counter++){ }
первый параметр является встречной переменной. второй параметр указывает, как долго должен длиться цикл, а третий параметр указывает, на сколько счетчик должен увеличиваться после каждого прохода.
если мы хотим выполнить цикл от 1 до 10, мы делаем следующее:
for(counter=1;counter<=10;counter++){ System.out.println(counter); }
если мы хотим выполнить цикл из 10 - 1, мы делаем следующее:
for(counter=10;counter>=1;counter--){ System.out.println(counter); }
если мы хотим перебрать 2-мерную коллекцию, например ...
1 2 3
4 5 6
7 8 9
int[][] grid = new int[][] {{1,2,3},{4,5,6},{7,8,9}};
нам нужно 2 цикла. Внешний цикл будет проходить через все строки, а внутренний цикл будет проходить через все столбцы.
вам понадобятся 2 цикла, один для итерации по строкам, один для итерации по столбцам.
for(i=0;i<grid.length;i++){
//this will loop through all rows...
for(j=0;j<grid[i].length;j++){
//will go through all the columns in the first row, then all the cols in the 2nd row,etc
System.out.println('row ' + i + '-' + 'column' + j + ':' + grid[i][j]);
}
}
Во внешнем цикле мы устанавливаем счетчик в 0 для первого параметра. во-вторых, чтобы вычислить, сколько раз мы будем выполнять цикл, мы используем длину массива, которая будет равна 3, а для третьего параметра мы увеличиваем на единицу. мы можем использовать счетчик i, чтобы указать, где мы находимся внутри цикла.
Затем мы определяем длину конкретной строки, используя grid [i] .length. Это вычислит длину каждой строки, когда они проходят через.
Пожалуйста, не стесняйтесь задавать любые вопросы, касающиеся петель!
РЕДАКТИРОВАТЬ: понимание вопроса .....
Вам придется сделать несколько вещей с вашим кодом. Здесь мы будем хранить количество строк в переменной, говорите, если вам нужно передать это значение методу.
int lines = 10; //the number of lines
String carat = ">";
for(i=1;i<=lines;i++){
System.out.println(carat + "\n"); // last part for a newline
carat = carat + ">>";
}
Выше будут распечатаны караты, идущие до самого конца. Мы выводим переменную в каратах, а затем увеличиваем переменную в каратах на 2 карата.
.... Следующее, что нужно сделать, - это реализовать что-то, что решит, когда уменьшать караты, или мы можем подняться на половину из них и на другую половину.
Редактировать 3:
Class Test {
public static void main(String[] args) {
int lines = 7;
int half = lines/2;
boolean even = false;
String carat = ">";
int i;
if(lines%2==0){even = true;} //if it is an even number, remainder will be 0
for(i=1;i<=lines;i++){
System.out.println(carat + "\n");
if(i==half && even){System.out.println(carat+"\n");} // print the line again if this is the middle number and the number of lines is even
if(((i>=half && even) || (i>=half+1)) && i!=lines){ // in english : if the number is even and equal to or over halfway, or if it is one more than halfway (for odd lined output), and this is not the last time through the loop, then lop 2 characters off the end of the string
carat = carat.substring(0,carat.length()-2);
}else{
carat = carat + ">>"; //otherwise, going up
}
}
}
}
Объяснение и комментарий в ближайшее время. Извините, если это слишком сложно (я уверен, что это даже не самый лучший способ решить эту проблему).
Думая о проблеме, у нас есть горб, который появляется на полпути для четных чисел и на полпути округляется для нечетных чисел.
В горбах, если он четный, мы должны повторить строку.
Затем мы должны начинать снимать «<<» каждый раз, так как мы идем вниз. </p>
Пожалуйста, спросите, если у вас есть вопросы.