For 循环模式从 654321,54321.. 到 1

For Loop pattern from 654321,54321.. to 1

使用Java,

我正在尝试使用嵌套 for 循环来制作一个打印出 654321 到 1 的图表,

示例,

654321

54321

4321

321

21

1

下面的代码打印出一个足够接近的例子,但不是从前面递减,而是从后面递减,

654321

65432

6543

654

65

6

有点像我想放的东西,你怎么让它从头开始倒数?

public class test_for_loops{

   public static void main (String [] args){
      int lines = 6;
      for (int i = 1; i <= lines; i++){
       for (int j = lines; j >= i; j--){
         System.out.print (j + " ");
         }   
      System.out.println();
    }
   }
}

1.) 只需从 0 开始 i 并设置 j=lines-i

2.) 遍历j直到1

    int lines = 6;
      for (int i = 0; i < lines; i++){
       for (int j = lines-i; j >= 1; j--){
         System.out.print (j + " ");
         }   
      System.out.println();
    }

输出:

6 5 4 3 2 1 
5 4 3 2 1 
4 3 2 1 
3 2 1 
2 1 
1 

工作

 i   = 0 
     j (6 - 0 => 6)    6 , 5 , 4 , 3 , 2 , 1 

 i   = 1 
     j (6 - 1 => 5)  5 , 4 , 3 , 2 , 1 

 i   = 2 
     j (6 - 2 => 4)  4 , 3 , 2 , 1 
  .
  .  
 i   = 5 
     j (6 - 5 => 1)  1

你没有减少行数,所以在内循环开始时 j 总是设置为 6。试试这个:

public static void main (String [] args){
  int lines = 6;
  int jcounter = lines;
  for (int i = 1; i <= lines; i++){
   for (int j = jcounter ; j >= 1; j--){
     System.out.print (j + " ");
     }
  jcounter--;   
  System.out.println();
}

} }

试试这个:

int lines = 6;

for (int i = 1; i <= lines; i++){

    for (int j = lines - i + 1; j >= 1; j--){

        System.out.print (j + " ");
    }

    System.out.println();
}

输出:

6 5 4 3 2 1 
5 4 3 2 1 
4 3 2 1 
3 2 1 
2 1 
1 
int n = 6;
for (int i = n; i > 0; i--) {
    for (int j = i; j > 0; j--) {
        System.out.print(j);
    }
    System.out.println();
}

说明:使用外循环来控制每行的长度(最大数量)。使用内部循环使用该长度打印每行的元素。我希望一切都清楚

我刚刚更改了 for 循环的顺序

public class test_for_loops{

   public static void main (String [] args){
      int lines = 6;
      for (int cLine = lines; i > 0 ; i--){
       for (int j = cLine; j > 0; j--){
         System.out.print(j + " ");
         }   
      System.out.println();
    }
   }
}

你离得太近了,我们只需要在 2 个地方进行更改,即

1.) 外循环 使 i=0 并让它 运行 直到 < lines

2.) 内循环 使 j = lines-i 并让它 运行 直到 > 0

public class test_for_loops{
   public static void main (String [] args){
     int lines = 6;
     for (int i = 0; i < lines; i++){
       for (int j = lines-i; j > 0; j--){
         System.out.print (j + " ");
       }   
       System.out.println();
    }
 }
}

我不太确定为什么要在 for-loop 中执行此操作,但我能想到的最佳方法是创建一个整数数组,然后打印出数组中的值按他们的指数。通过循环的每次迭代,我们开始打印出数组中少 1 个位置的部分(即我们首先打印数组中的所有 6 位数字 (6-0=6),然后我们打印前 5 位数字数组 (6-1=5),然后是前 4 个 (6-2=4) 等等。)...唯一的问题是当您到达打印位置时。循环永远不会达到零,因为当你达到零时它会跳出,否则你会得到一个 array-out-of-bounds 异常。所以我能想到的最佳解决方案如下 - 我必须打印出最后一位数字:

public class test_for_loops{
    public static void main (String [] args){\
    int lines = 6; 
    int digits[] = {1,2,3,4,5,6}; 
    for (int i = 1; i < lines; i++){
        for (int j = lines; j >= i; j--){
            System.out.print (digits[j-i]);
        }
        System.out.println("\n");    
    }
    System.out.println(1);
}

这将产生以下输出:

654321
54321
4321
321
21
1