在Java中向后嵌套For循环?

时间:2014-09-28 03:50:55

标签: java for-loop nested-loops figure

如何打印?

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////

我有:

public class SlashFigure {
    public static void main(String[] args){
        first();
    }
    
    

        public static void first() {
            for ( int i= 1; i<=6; i++) {
                for (int l = 0; l <= 2 * i -2; l++) {
                    System.out.print("\\");
                }
                        for (int e = 22; e >= -2*i + 26; e-=1) {
                            System.out.print("!");
                        }
                                for (int r = 0; r <= 2 * i -2; r++) {
                                    System.out.print("/");
                                }
                      System.out.println();
            }
        }
    }

并打印出来:

\/
\\\!///
\\\\\!!!/////
\\\\\\\!!!!!///////
\\\\\\\\\!!!!!!!/////////
\\\\\\\\\\\!!!!!!!!!///////////

2 个答案:

答案 0 :(得分:1)

您写的代码超出了您的需要。您要显示的行的模式只是line * 2 * \ + 22 - line * 4 * ! + line * 2 * /,只有6行,但它总是包含2个字符的组,所以我们可以将所有这些除以2,并观察\\//遵循相同的规则:

for(int i=0, j=0, k=0; i<6; i++) {
  for(j=0; j<i; j++) { System.out.print("\\\\"); }
  for(k=0; k<(11-2*i); k++) { System.out.print("!!"); }
  for(j=0; j<i; j++) { System.out.print("//"); }
  System.out.println();
}

完成。

答案 1 :(得分:0)

你有多个嵌套for循环,但你只需要一个开销循环来逐行接近。

for(int i = 0; i < 6; i++){
    for(int k = 0; k < i*2; k++) System.out.print("\\");
    for(int j = i*2; j < 22 - (i*2); j++) System.out.print("!");
    for(int l = 0; l < i*2; l++) System.out.print("/");
    System.out.println();
}