2012-09-30 181 views
0

我想用一個字符串創建一個循環,以便每個循環都會顯示上一行的最後一個和第一個字符。我也試圖打印每行旁邊的每個循環的長度。它看起來像一個顛倒的金字塔。java for循環金字塔

我有這樣的:

for(int scounter = fullName.length(); scounter > 0; scounter--) 
    for (String name : fullName) 
    for(int counter = 0; counter < fullName.length(); counter++) 

    System.out.println(scounter + "[ " + fullName.substring(0, fullName.length() counter)+ " ]"); 

它打印出這樣的事情:

24****** 
    24**** 
    24** 
    24* 

但是我正在尋找一些與此類似:

7******* 
    5***** 
     4*** 
     1* 
+1

應的長度爲7,5,3,1? – gigadot

+1

提供的代碼與倒金字塔無關!有什麼缺失? – user1406062

+0

@gigadot:那太合乎邏輯了! –

回答

0

您的例子不匹配你的問題的話,所以這裏是一種按照我的理解行事的方法:

public void pyramid(String text) { 
    int len = text.length(); 
    int start = 0; 
    while (start < len) { 
     for (int i = 0; i < start; ++i) { 
      System.out.print(" "); 
     } 
     System.out.println(text.substring(start, len)); 
     ++start; 
     --len; 
    } 
} 
2
String str = "*******"; 
for (int i = 0, l = str.length(); i <= l/2; i++) { 
    String line = str.substring(i, l - i); 
    System.out.printf("%" + (i + 1) + "d%s\n", line.length(), line); 
} 

這將print

7******* 
5***** 
    3*** 
    1* 

我假設你的意思3而不是4在你的例子,那就是要通過2遞減。

1

我開始研究這個問題,發現我的解決方案與Joao的稍有不同。希望這可以幫助!

public class pyramid 
{ 

public static void main(String[] args) 
{ 
    for(int i=0, sz=args[0].length();i<sz; ++i,--sz) 
    { 
     System.out.printf("%"+(i+1)+"d%s\n", sz-i, args[0].substring(i,sz)); 
    } 
} 

} 

調用按請求:

java pyramid abcdefg 
7abcdefg 
5bcdef 
    3cde 
    1d 

java pyramid abcdef 
6abcdef 
4bcde 
    2cd 
+0

你可以給你一個示例調用你的代碼。 –

+0

Rob我按照你的要求編輯過。 –

+0

+1 Anand。歡迎來到Stackoverflow.com :) –