以金字塔形式打印字符串

时间:2013-03-05 16:02:25

标签: java string

我喜欢打印一个字母,该字符串是以字母形式逐字逐句地从用户那里获得的。 例如 - 当用户将输入作为“字符串”输出时,输出应为:

     s
    s t
   s t r
  s t r i
 s t r i n
s t r i n g

我尝试过一个小程序,但它没有以金字塔形式排列。该计划

    import java.io.*;
    import java.util.Scanner;
    import java.lang.String;

    public class Mainer {
    public static void main(String args[]){
       try
       {
           Scanner sc = new Scanner(System.in);
           String s;
           int l;
           System.out.println("Enter the String : ");
           s = sc.nextLine();
           l = s.length();
           for(int i=0; i<l;i++)
           {

               for(int j=0;j<i;j++)
               {
                   System.out.printf("%c ",s.charAt(j));
               }
               System.out.printf("%c\n",s.charAt(i));
           }         

       }
       catch(Exception e)
       {
           System.err.println(e);
       }
    }
}

以上程序的输出是(当字符串作为输入时) 输入字符串: 串

s
s t
s t r
s t r i
s t r i n
s t r i n g

你可以把它安排为第一个例子吗?

5 个答案:

答案 0 :(得分:4)

所以你的程序需要做的是用空格填充文本。在第一个示例中,您的第一个输出实际上是一个字母,但与最后一个输出的中间字母位于相同的位置。

因此,伪代码中的第一个输出看起来像:

String padding = (text.length/2) number of spaces;
// The padding on the left.
Print padding
// The letter to print.
Print first letter

请记住,填充的长度将随着您在该迭代中输出的文本的长度而变化。但我不打算告诉您。这会破坏所有的乐趣:)

答案 1 :(得分:2)

在输出之前,您需要将字符串长度的一半添加为字符串前面的空格数(填充)。但是在迭代时每次减去1个空格以创建形状。

或者说另一种说法是你获得原始字符串的长度并打印出你没有打印的字符的空格数。

for(int x = 0; x < l - i; x++) {
    System.out.print(" ");          
}

答案 2 :(得分:1)

只需将另一个for循环写入打印空间

for(int i=0; i<l;i++)
{

    for(int j=0; j<l-(i+1); j++)
    {
        System.out.print(" ");
    }

    for(int j=0;j<i;j++)
    {
        System.out.printf("%c ",s.charAt(j));
    }
    System.out.printf("%c\n",s.charAt(i));
}  

记录,你可能需要调整一下。

答案 3 :(得分:1)

这是作弊吗? (只有一个循环)

String s = "string";
        int len = s.length();           
        String tmp = "";
        for (char c : s.toCharArray()) {
            tmp += tmp.length() > 0 ? " " + String.valueOf(c) : String.valueOf(c);
            System.out.printf("%" + (len + tmp.length() - 1) + "s\n", tmp);
            len--;
        }

输出:

     s
    s t
   s t r
  s t r i
 s t r i n
s t r i n g

答案 4 :(得分:0)

应该做的伎俩

import java.io.*;
import java.util.Scanner;
import java.lang.String;

public class Mainer {
public static void main(String args[]){
   try
   {
       Scanner sc = new Scanner(System.in);
       String s;
       int l;
       System.out.println("Enter the String : ");
       s = sc.nextLine();
       l = s.length();
       for(int i=0; i<l;i++)
       {
           int padding = s.length() - i;
           if (padding> 0) {
               System.out.printf("%" + padding + "s", " ");
           }
           for(int j=0;j<i;j++)
           {
               System.out.printf("%c ",s.charAt(j));
           }
           System.out.printf("%c\n",s.charAt(i));
       }         

   }
   catch(Exception e)
   {
       System.err.println(e);
   }
}
}