对于循环模式从654321,54321 ..到1

时间:2017-02-16 16:42:34

标签: java for-loop nested nested-loops counting

使用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();
    }
   }
}

7 个答案:

答案 0 :(得分:0)

1。)只需从i开始0并设置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

答案 1 :(得分:0)

您不会减少行数,因此在内循环开始时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();
}

} }

答案 2 :(得分:0)

试试这个:

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 

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

我刚刚改变了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();
    }
   }
}

答案 5 :(得分:0)

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

1。)外循环使i = 0并让它一直运行直到&lt;线

2.)内环使 j = lines-i 让它一直运行到&gt; 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();
    }
 }
}

答案 6 :(得分:0)

我不确定为什么要在for循环中执行此操作,但我能想到的最佳方法是创建一个整数数组,然后通过索引打印出数组中的值。通过循环的每次迭代,我们开始打印出比较少1位的数组部分(即我们从打印数组中的所有6位数开始(6-0 = 6),然后我们打印前5位数字数组(6-1 = 5),然后是前4(6-2 = 4),依此类推。)...唯一的问题是当你到达打印位置时。循环永远不会达到零,因为它会在您达到零时跳出,或者如果不这样,则会出现数组超出范围的异常。所以我能提出的最佳解决方案如下:我必须打印出最后一位数字:

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