基于弦的特征的钻石形状

时间:2016-02-27 04:05:42

标签: java string

我需要编写一个程序来读取字符串,然后根据字符串中的字符(来自用户输入)输出菱形。例如,如果用户输入样本,则应在菱形中打印以下内容:      小号     SAS    SAMAS   SAMPMAS  SAMPLPMAS SAMPLELPMAS  SAMPLPMAS   SAMPMAS    SAMAS     SAS      小号

我已经弄清楚如何打印输入的第一个字母,不知道如何处理其他字母。 (这是针对正常的三角形,我假设倒置的三角形非常相似。)

import java.util.Scanner;
public class PrintDiamond {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a string");
        String str = input.nextLine();
        int l=str.length()*2-1;
        int m=str.length();
        for (int i=0; i<=m; i++) {
            for (int j=0; j<=l; j++) {
                if (j<=m-i) {
                    System.out.print(" ");
                } else if (j==m) {
                    System.out.print(str.charAt(m-j));
                } else if (j>=m+i) {
                    System.out.print(" ");
                }
            }
            System.out.print("\n");
        } 
    }

}

1 个答案:

答案 0 :(得分:0)

我建议使用Stringbuilder和辅助方法来添加保持菱形形状所需的空间。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a string");
    String str = input.nextLine();
    StringBuilder sb;
    int i;
    for(i=1; i<=str.length(); i++){
        System.out.print(addSpace(str.length()-i) + str.substring(0,i));
        if(i>1){
            sb = new StringBuilder(str.substring(0,i-1));
            sb = sb.reverse();
            System.out.print(sb.toString())
        }
        System.out.println();
    }
    for(i=str.length()-1; i>0; i--){
        System.out.print(addSpace(str.length()-i) + str.substring(0,i));
        if(i>1){
            sb = new StringBuilder(str.substring(0,i-1));
            sb = sb.reverse();
            System.out.print(sb.toString())
        }
        System.out.println();
    }
}
public static String addSpace(int x){
    String s = "";
    for(int i=0; i<x; i++){
        s += " ";
    }
    return s;
}

还需要考虑的事项:只需阅读下一行即可使用空格。虽然这不会导致每个说法出错,但它会与制作钻石形状的想法相矛盾。