java打印出菱形圖案例項詳解
阿新 • • 發佈:2020-02-26
第一步:首先對影象進行解析
想要列印該圖形必須要進行多層迴圈巢狀,分兩個部分進行列印。
第一部分為上半部分前四行,他們是遞增的關係,後半部分後三行為遞減關係,由此可以得出我們需要寫兩個打的迴圈。並且由於“*”位置的關係,我們必須帶入空格同時列印。所以每個部分需要兩個迴圈控制,即兩個大迴圈每個裡面巢狀兩個小迴圈總計四個迴圈。
第二部:對數字進行分析
在分析之前,我們必須明白外層迴圈控制行數,內層迴圈控制列數,因此我們需要分析他的行和列。
示例程式碼如下:
class ForForTest { public static void main(String[] args) { /* 輸出如下圖形: 行數i: 空格數j: “*”數目z: * 1 3 1 *** 2 2 3 ***** 3 1 5 ******* 4 0 7 ***** 1 1 5 6 *** 2 2 3 5 * 3 3 1 4 */ for (int i = 1;i <= 4;i++){ for (int j = 1;j <= 4 - i;j++) { System.out.print(" "); } for (int z = 1;z <= i*2-1;z++){ System.out.print("*"); } System.out.println(); } for (int i = 1;i <= 3;i++){ for (int j = 1;j <= i;j++){ System.out.print(" "); } int y = 3; for (int z = 5;z >= 2*i-1;z--){ System.out.print("*"); } System.out.println(); } } }
例項補充:
import java.util.Scanner; import java.util.regex.Matcher; public class test01 { private static int i; private String ch; public static void main(String[] args) { runTest(); } private void printBlank(int blank){//打空格 for(int i=blank;i>=1;i--){ System.out.print(" "); } } private void printStar( int sum,String ch){ //打圖形 for(int i=sum;i>=1;i--){ System.out.print(ch); } } private void printTab(){ //打回車 System.out.println(); } private void run(int level,String ch){//綜合打 if(ch.length()==1){ for(i=1;i<=(level+1)/2;i++){ if(i==1){ printBlank((level+1)/2-i); printStar(1,ch); printTab(); }else{ printBlank((level+1)/2-i); printStar(1,ch); printBlank(((level+1)/2+i-1)-((level+1)/2-i)-2); //總元素為 層數+i-1,再減去列印的空格和*號數量. printStar(1,ch); printTab(); } } for(i=(level+1)/2-1;i>=1;i--){ if(i==1){ printBlank((level+1)/2-i); printStar(1,ch); printBlank((level+1)/2+i-1-((level+1)/2-i)-2); printStar(1,ch); printTab(); } } }else{ for(i=1;i<=(level+1)/2;i++){ if(i==1){ printBlank((level+1)/2-i+ch.length()/2); printStar(1,ch); printTab(); } } for(i=(level+1)/2-1;i>=1;i--){ if(i==1){ printBlank((level+1)/2-i+ch.length()/2); printStar(1,ch); printTab(); } } } } public static void runTest() { //判斷條件 Scanner s = new Scanner(System.in); try{ System.out.println("請輸入要列印的層數,只能輸入大於等於3的奇數 :" ); int level = s.nextInt(); String str = String.valueOf(level); if(str.matches("[1-9]\\d*")&&Integer.parseInt(str)%2!=0&&Integer.parseInt(str)!=1){ System.out.println("請輸入要列印的形狀:" ); String ch = s.next(); try{ if(ch.matches("[^\u4e00-\u9fa5]+" )){ new test01().run(level,ch); }else { throw new Exception();} }catch (Exception e) { System.out.println("輸入有誤!!!不能包含漢字字元,請重新輸入"); System.out.println("***********************************"); runTest(); //遞迴 } }else if(str.matches("[-9-0]+")){ // throw new Exception(); } }catch (Exception e) { System.out.println(" 輸入有誤!!!只能輸入大於等於3的奇數,請重新輸入"); System.out.println("***********************************"); runTest(); //遞迴 } } }
以上就是java打印出菱形圖案例項詳解的詳細內容,更多關於java列印菱形圖案的資料請關注我們其它相關文章!