帮助理解java 'for'循环

q7solyqu  于 2022-12-25  发布在  Java
关注(0)|答案(4)|浏览(145)

我必须写一个java程序,其中的解决方案将包括打印的箭头提示数字取决于行数。下面是如何的结果应该看起来的例子。然而,在我理解for循环之前,我无法做到这一点。我知道我必须处理行和列,可能还有嵌套循环。我只是不知道如何使用for循环连接行和列。请帮助我理解这些循环。谢谢!
示例#1(奇数行)

>
>>>
>>>>>
>>>>>>>
>>>>>
>>>
>

示例#2(偶数行)

>
>>>
>>>>>
>>>>>>>
>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>
o8x7eapl

o8x7eapl1#

for循环将遍历一个数据集合,比如一个数组。2经典的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外循环将遍历所有的行,内循环将遍历所有的列。
你需要两个循环,一个循环遍历行,一个循环遍历列。

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,对于第三个参数,我们递增1。我们可以使用计数器i来引用我们在循环中的位置。
然后我们使用grid [i]. length来确定特定行的长度,这将计算每行在循环过程中的长度。
请随时提出任何有关for循环的问题!
编辑:理解问题.....
你必须对你的代码做一些事情。这里我们将把行数存储在一个变量中,如果你需要把这个值传递给一个方法,请说出来。

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克拉。
......下一步要做的是实现一些东西,决定何时减少克拉,或者我们可以增加一半,减少另一半。
编辑三:

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
                }
        }
    }
}

简短的解释和评论。如果这太复杂了,我道歉(我敢肯定这甚至不是解决这个问题的最好方法)。
思考这个问题,我们有一个驼峰,出现在偶数的一半,奇数的一半。
在驼峰处,如果是偶数,我们必须重复这个字符串。
然后我们必须每次开始去掉"〈〈",因为我们要下降。
如有疑问,请提出。

k97glaaz

k97glaaz2#

我的家庭作业也有同样的问题,最终通过一个for循环使用大量嵌套的if循环得出了正确的答案。
在整个代码中有很多注解,您可以按照沿着来解释逻辑。

class ArrowTip {

public void printFigure(int n) {      //The user will be asked to pass an integer that will determine the length of the ArrowTip
 int half = n/2;   //This integer will determine when the loop will "decrement" or "increment" the carats to String str to create the ArrowTip
 String str = ">";  //The String to be printed that will ultimately create the ArrowTip
 int endInd;        //This integer will be used to create the new String str by creating an Ending Index(endInd) that will be subtracted by 2, deleting the 2 carats we will being adding in the top half of the ArrowTip

 for(int i = 1; i <= n; i++) {       //Print this length (rows)
    System.out.print(str + "\n");   //The first carat to be printed, then any following carats.
    if (n%2==0) {       //If n is even, then these loops will continue to loop as long as i is less than n.
      if(i <= half) {     //This is for the top half of the ArrowTip. It will continue to add carats to the first carat
         str = str + ">>";    //It will continue to add two carats to the string until i is greater than n.
      }
      endInd = str.length()-2;  //To keep track of the End Index to create the substring that we want to create. Ultimately will determine how long the bottom of the ArrowTip to decrement and whether the next if statement will be called.
      if((endInd >= 0) && (i >= half)){   //Now, decrement the str while j is greater than half
         str = str.substring(0, endInd);  //A new string will be created once i is greater than half. this method creates the bottom half of the ArrowTip
      }
    }
    else {          //If integer n is odd, this else statement will be called.
      if(i < half+1) {  //Since half is a double and the integer type takes the assumption of the one value, ignoring the decimal values, we need to make sure that the ArrowTip will stick to the figure we want by adding one. 3.5 -> 3 and we want 4 -> 3+1 = 4
          str = str + ">>"; //So long as we are still in the top half of the ArrowTip, we will continue to add two carats to the String str that will later be printed.
       }
      endInd = str.length()-2;      //Serves the same purpose as the above if-loop when n is even.
       if((endInd >= 0) && (i > half)) {  //This will create the bottom half of the ArrowTip by decrementing the carats.
        str = str.substring(0, endInd);   //This will be the new string that will be printed for the bottom half of the ArrowTip, which is being decremented by two carats each time.
      }
    }
 }
}
}

再说一次,这是家庭作业。编程愉快。

35g0bw71

35g0bw713#

这里有一个简单的答案,希望对你有帮助!干杯洛根。

public class Loop {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            int count = i;
            int j = 0;

            while (j != count) {
                System.out.print(">");
                j++;
            }
            System.out.println();

        }
        for (int i = 10; i > 0; i--) {
            int count = i;
            int j = 0;

            while (j != count) {
                System.out.print(">");
                j++;
            }
            System.out.println();

        }
    }
}
bxfogqkk

bxfogqkk4#

用于生成"for"循环:

public class Int {
    public static void main(String[] args) {
        
        for (Long num = 1000000L; num >= 9; num++) {
            System.out.print("Number: " + num + " ");
        }
    }
}

输出:

Number: 1008304 Number: 1008305 Number: 1008306 Number: 1008307 ...

相关问题