2017-05-19 84 views
0

這是家庭作業,我需要幫助瞭解如何和爲什麼。如何從用戶輸入和降序開始打印字母金字塔?

我試圖在網上追蹤衆多例子,但他們都以硬編碼'A'爲出發點,而且我沒有對我的具體需求進行逆向工程。

我必須打印的開始與用戶輸入的字母金字塔(也定義了金字塔的高度),假設輸入E中的用戶,就像這樣:

E 
ED 
EDC 
EDCB 
EDCBA 

我的第一個問題是,我不明白如何讓用戶輸入字母成爲每行的起點。

這是Java,我不能使用數組或字符串,只能使用char和int。

有人可以請解釋在實現這一目的?

這裏是我的第一步,這是我知道我能做到:

intHeight = chrUserLetter - 'A' + 1; 
chrCurrentLetter = chrUserLetter; 

for (intRowIndex = 1; intRowIndex <= intHeight; intRowIndex += 1) 
{ 
    for (intColumnIndex = 1; intColumnIndex <= intRowIndex; intColumnIndex += 1) 
    { 
     System.out.print(chrCurrentLetter); 
     chrCurrentLetter -= 1;    
    } 

    System.out.println();       
} 

,輸出是:

E 
DC 
[email protected] 
?>=< 
;:987 
+0

你試過調試你的代碼嗎? – Turing85

+0

當前每次執行處理列的內部循環時,都會修改'chrCurrentLetter'。這是一個問題,因爲您顯然希望每行的首字母都相同。 – Aaron

回答

1

只是招行chrCurrentLetter = chrUserLetter;第一的重新初始化它

public class Test { 
    public static void main(String[] args) { 
     char chrUserLetter='E'; 
     int intHeight = chrUserLetter - 'A' + 1; 

     for (int intRowIndex = 1; intRowIndex <= intHeight; intRowIndex += 1) 
     { 
      char chrCurrentLetter = chrUserLetter; 
      for (int intColumnIndex = 1; intColumnIndex <= intRowIndex; intColumnIndex += 1) 
      { 
       System.out.print(chrCurrentLetter); 
       chrCurrentLetter -= 1; 
      } 

      System.out.println(); 
     } 
    } 
} 
+0

Omg。我簡直不敢相信!我花了很長時間嘗試不同的循環,如果陳述等。只要它讓我接受你的答案,我會的。你可以擴展爲什麼該初始化器的位置有所不同嗎? – user3691838

+0

在您的原始代碼中,您繼續從每個循環中的相同變量中減去。所有你需要的只是重新啓動它爲每個內部循環。 – StanislavL

+0

我現在看到了!非常感謝你,你挽救了我一半的頭髮。 – user3691838

1

您需要重置chrCurrentLetter變量行。移動分配到外的for循環:

intHeight = chrUserLetter - 'A' + 1; 

for (intRowIndex = 1; intRowIndex <= intHeight; intRowIndex += 1) 
{ 
    chrCurrentLetter = chrUserLetter; 
    for (intColumnIndex = 1; intColumnIndex <= intRowIndex; intColumnIndex += 1) 
    { 
     System.out.print(chrCurrentLetter); 
     chrCurrentLetter -= 1;    
    } 

    System.out.println();       
} 

說明:如果您分配chrCurrentLetter只有一次,那麼對於第一次迭代這將是E。然後你遞減一次,當你添加下一個迭代時,它是D,以此類推。每次獲得所需結果時,將其重置爲E

+0

謝謝! @StanislavL在你面前幾秒鐘回答,但你的解決方案是一樣的。我感謝幫助! – user3691838