0

我想用一个字符串创建一个循环,以便在每个连续循环中,不会显示上一行的最后一个字符和第一个字符。我还尝试在每行旁边打印每个循环的长度。它看起来像一个倒置的金字塔。

我有这个:

    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*
4

4 回答 4

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);
}

这将打印

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

我假设您的意思是,3而不是4在您的示例中,也就是说,您想要减少2.

于 2012-09-30T01:01:16.750 回答
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
于 2012-09-30T01:27:48.550 回答
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;
    }
}
于 2012-09-30T00:58:35.410 回答
0
    for(int i = 1; i<=4; i++) {
        for(int k = 3;k>=i; k--){
                System.out.print(" ");
            }
    for(int j = 1; j<=i; j++){
            System.out.print("*");
        }
        for(int n = 2; n<=i;n++){
            System.out.print("*");
        }   
                        
        System.out.println(" ");
    }
        for(int m = 1 ;m<=3; m++){
            for(int o = 1;o<=m; o++){
                System.out.print(" ");
            }
            for(int p = 3;p>=m;p--){
                System.out.print("*");
            }
            for(int q = 2;q>=m;q--){
                System.out.print("*");      
            }   
            
            System.out.println();
        }   
}

}

于 2021-11-18T09:59:54.727 回答