本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** ***** 2
package testhelloworld; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String testline = sc.nextLine(); String[] test = testline.split(" ");//分割字符串 int count = Integer.parseInt(test[0]); String icon = test[1]; int last = 0; int sum = 0; int num2 = 0; if(count%2!=0) { count = count - 1; int num1 = count/2; // System.out.println(num1); for(int i=1;sum<num1&&i*2<count;i=i+2) { num2 = i; sum = sum + i; } // System.out.println(num2); for(int j=num2;j>=1;j=j-2) { for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } for(int k=j;k>0;k--) { System.out.print(icon); } for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } System.out.println(); }//上半部分 for(int j=3;j<=num2;j=j+2) { for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } for(int k=j;k>0;k--) { System.out.print(icon); } for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } System.out.println(); }//下半部分 if(sum!=1) { last = count - (sum-1)*2; }else { last = count; } System.out.print(last); }else { int num1 = count/2; // System.out.println(num1); for(int i=1;sum<num1&&i*2<count;i=i+2) { num2 = i; sum = sum + i; } // System.out.println(num2); for(int j=num2;j>=1;j=j-2) { for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } for(int k=j;k>0;k--) { System.out.print(icon); } for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } System.out.println(); }//上半部分 for(int j=3;j<=num2;j=j+2) { for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } for(int k=j;k>0;k--) { System.out.print(icon); } for(int l=(num2-j)/2;l>0;l--) { System.out.print(" "); } System.out.println(); }//下半部分 if(sum!=1) { last = count - sum*2; }else { last = count - 1; } System.out.print(last); } } }