2012-10-13 339 views
0

我最後一次在這裏,唯一的問題,我需要幫助,在我的計算機科學功課參與制作100線直角三角形,這裏是該代碼:初學者的java - 打印直角三角形向後

public class PrintTriangle { 
    public static void main(String[] args) { 
     // Print a right triangle made up of * 
     // starting at 100 and ending with 1 
     int i = 100; 
     while (i > 0) { 
      for (int j = 0; j < i; j++) 
      System.out.print("*"); 
      System.out.println(); 
     i--; 
     } 
    } 
} 

好吧,現在他要求我們做相反的事情。這裏的實際問題:

「寫一個程序,將繪製在 以下形狀100線直角三角形:第一行,打印100‘’,第二行,99 ‘’。 ..最後一行,只有一個「*」。使用for循環這個問題。 名稱的程序作爲PrintTriangle.java」

***** 
    **** 
    *** 
    ** 
    * 

我敢肯定它的東西簡單,但我什麼都嘗試過直到這一點已經失敗或僅在a創建了1個空間 時間。任何建議或幫助將不勝感激!先謝謝你!

回答

2

好的,先來看看這兩個問題。你將如何與他們聯繫。

由於第二個問題是第一次的反向,你這樣做是什麼先在自己的第一個代碼,你需要做的,去年在這接下來的問題..

所以,你的循環實際上應該向後哪裏工作它以下面的代碼結束。

int i = 100; 
for (int j = 0; j < i; j++) 
      System.out.print("*"); 

所以,想想你需要做些什麼來使這個循環向後工作。

提示: -

  • 遞增,從0到100的前進
  • 遞減,從100到0向後

    **** 
    *** 
        ** 
        * 
    

而且,在你上面的圖案你看到您在打印您的之前需要首先打印spaces所以,你也需要考慮。

所以,在這裏,你必須實際打印兩種不同的角色: -

  • 很少Spaces,緊接着,
  • 很少*'s

這裏的模式: -

  • 讓我們的最大行爲max(100你的情況)
  • 行(i)有(i)的spaces號(行0具有0的空間,第1行具有1個空間)
  • 然後,它具有:(n - i)的stars(行0號有100顆恆星,第1行有99顆星)

所以,你可以看到你的實際需要two循環這裏。

分析一下,我說的一切,並拿出一些代碼。試試看。

0
public class Main { 
    public static void main(String[] args) { 
     for (int i = 0; i < 100; i++) { 
      for (int j = 0; j < i; j++) 
       System.out.print(" "); 
      for (int j = i; j < 100; j++) 
       System.out.print("*"); 
      System.out.println(); 
     } 
    } 
} 
+0

@Hisham ..請不要張貼工作代碼,除非OP嘗試它自己。這將根本不幫助他。 –

+0

@RohitJain ..道歉對於這一點,以爲他只是想代碼 – Hisham

+0

@Hisham ..其確定。但即使他想要代碼,也不應該給他。現在好了。記住下次 –

0

我只是告訴你如何做到這一點。 瞭解模式。

就像印刷*以往的問題,你需要打印的空間。然後按相反順序打印星星。

* 
** 
*** 

*** 
** 
    * 
+0

第一個空格不需要管理。倒退並不是直的。 – SiB

0

對於這些類型的金字塔(我叫他們)首先確保你的空間權

* * * * * 
- * * * * 
- - * * * 
- - - * * 
- - - - * 

現在你可以看到兩種模式,現在你可以編程。下面是僞代碼...

FOR I=1 to N 
    FOR J = 1 to I-1 
     PRINT " " 
    ENDFOR 
    FOR K = 1 to N-I+1 
     PRINT "*" 
    ENDFOR 
PRINT "\n" 
ENDFOR 
0
int i = 1; 
while (i =< 100) { 
    // first put spaces as long as it is necessary 
    // it will be i times less than 100 
    // for example for the first line (i = 1), 99 space (100-i) and 1 star (i) 
    // for the 50. line (i == 50), 50 space (100-i) and 50 stars (i) 
    for(int j = 0; j < 100-i; j++) 
    System.out.print(" "); 

    // then the stars 
    for (int j = 0; j < i; j++) 
    System.out.print("*"); 
    System.out.println(); 
    i++; 
} 
0

下面的代碼可以幫助您找到解決方案。

class ReverseTriangle { 
public static void main(String[] args) { 
    for (int i = 0; i < 100; i++) { 
     for (int j = 0; j < i; j++) 
      System.out.print(" "); 
     for (int j = i; j < 100; j++) 
      System.out.print("*"); 
     System.out.println(); 
    } 
} 
} 
0
public class PrintTriangle { 
    public static void main(String[] args) { 

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

請修正代碼高亮顯示並在您的代碼片段中添加一些說明。從FAQ中閱讀這篇文章:http://stackoverflow.com/help/how-to-answer –

0
public static void printPyramid(int ln){ 
    for(int j=ln;j>0;j--){ 
     for(int i=ln;i>0;i--) { 
      if (j >= i) { 
       System.out.print("*"); 
      } else { 
      } 
      System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 

public static void printReversePyramid(int ln){ 
    for(int j=0;j<ln;j++){ 
     for(int i=ln;i>=0;i--) { 
      if (j >= i) { 
       System.out.print("*"); 
      } else { 
      } 
      System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 

public static void printDiamond(int ln){ 
    for(int j=0;j<2*ln+1;j++){ 
     for(int i=ln;i>=0;i--) { 
      if (j >= i && j < ln+1) { 
       System.out.print("*"); 
      } else if(j > ln && (2*ln)-j>=i){ 
       System.out.print("*"); 
      } 
      else { 
      } 
      System.out.print(" "); 
     } 
     System.out.println(); 
    } 
}