我需要编写一个程序来读取字符串,然后根据字符串中的字符(来自用户输入)输出菱形。例如,如果用户输入样本,则应在菱形中打印以下内容: 小号 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");
}
}
}
答案 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;
}
还需要考虑的事项:只需阅读下一行即可使用空格。虽然这不会导致每个说法出错,但它会与制作钻石形状的想法相矛盾。