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 に答える