2013-09-29 152 views
3

我是Java新手,現在我想更好地學習循環。我做了一些例子,但我不知道該怎麼做一個三角形,看起來像這樣: 對於n = 6:java中的三角形數字

111111 
22222 
3333 
444 
55 
6 

我的代碼至今:

class Pyramid 
{ 
public static void main (String[] args) 
{ 
    int i,n=9,j; 
    for(i=1;i<=n;i++) 
    { 
     for(j=1;j<=i;j++) {   
System.out.print(i); }  
System.out.print("\n");   
}}} 

但我管理這樣做看起來是這樣的:

1 
22 
333 
4444 
55555 
666666 

如何使它以相反的順序?

+1

我建議學習如何for循環的作品,而不是由例如,但它是如何定義的,並瞭解它的概念。僅僅盲目地遵循例子(如此處所示)將來無濟於事。 – hexafraction

+1

非常感謝您的建議 –

+1

您的期望輸出是1-2-3-2-1-6。我沒有看到這種模式。 n = 5或n = 7會是什麼樣子? – pburka

回答

3

我們可以使用的是一個函數int numberForRow(int row),它將執行適當的轉換。然後可以使用該功能,如r = numberForRow(i); print(r)。它需要映射這樣的:

row (i) -> display number (r) 
6   1 
5   2 
4   3 
3   4 
2   5 
1   6 

我想你可以寫吧:)

看看輸入(I)和輸出(R)之間的關係 - 它可能是有用的注意,他們總是加起來相同的值,所以一點點的數學應該做的伎倆。

(雖然函數並不是嚴格要求的,但我發現這些函數可以幫助解決問題,特別是在這種情況下,很好地說明了轉換 - 它也適用於「更高級」轉換的情況,例如正如在原來的問題;-)

+1

我接受你的問題,因爲你讓我更難以理解代碼,我設法做到了。非常感謝你! –

+2

@alexAlex謝謝,我完全錯過了高度倒轉。玩得開心編程,並保持它:) – user2246674

3

你的問題是你的外for循環從61,所以你需要扭轉這一點。

變化

for(i=n;i>=1;i--) { 

for(i = 1; i <= n; i++) { 

進一步的解釋,讓你明白什麼是for循環內發生的事情:

一個for循環運行在三個子句:你開始,循環運行的條件以及運行後要執行的操作。

------v 
for(i = 1; i <= n; i++) { 

這是任務。您將一個變量設置爲一個數字,這是循環開始的地方。在這種情況下,我們從i = 1開始,因爲我們只想在第一行打印一個1。在第三個條款中,我們將增加它(讀取:添加一個),然後再次運行循環。

--------------v 
for(i = 1; i <= n; i++) { 

這是條件。只要此條件評估爲true,循環就會運行。換句話說,如果n = 6,這個循環將在i <= 6時運行。

--------------------v 
for(i = 1; i <= n; i++) { 

這是每次循環執行時會發生的情況。經過i = 1後,我們將增加i,所以現在i = 2。這將發生,直到條件(i <= n)評估爲false,即i = 7。如果條件是false,則循環將終止。

+1

謝謝,但即使它從第一位開始按我的意願,我需要打印第一個數字6次,然後編號2五次.. –

+0

謝謝,但我不認爲這是所需的輸出 –

1
public class Pyramid { 

    public static void main (String[] args) 
    { 
     int i,n=9,j; 
     for(i=1;i<=n;i++) 
     { 
      //for(j=1;j<=i;j++) { 
      for(j=n;j>=i;j--) { 
       System.out.print(i); 
      }  
      System.out.print("\n");   
     } 
    } 
} 

這應該有所幫助。

1

可以使用以下方法來完成:

public class Main { 

    public static void main(String[] args) { 

     int n = 6; 
     int m =n; 

     for (int i = 1; i <= n; i++,m--) { 
      for (int j = 1; j <= m; j++) { 
       System.out.print(i); 
      } 
      System.out.println(); 
     } 

    } 
}