2014-09-28 154 views
2

如何打印?向後嵌套For循環在Java中?

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

我:

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

,它的印刷本:

\/ 
\\\!/// 
\\\\\!!!///// 
\\\\\\\!!!!!/////// 
\\\\\\\\\!!!!!!!///////// 
\\\\\\\\\\\!!!!!!!!!/////////// 
+0

參見http://stackoverflow.com/questions/580269/reverse-iteration-through-arraylist-gives-indexoutofboundsexception/1063588#1063588 – 2014-09-28 03:55:23

回答

0

你有多個嵌套的循環,但只需要一個開銷循環一行接近線。

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(); 
} 
+0

和更有效地與最初的'for(int i = 0'爲'for( int i = 0,j = 0,k = 0)',然後對'\\'和'//'使用'for(k = 0)'兩次,因爲它們是相同的組。 – 2014-09-28 04:33:01

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

完成。