2012-09-30 185 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 :) –