您好,登錄后才能下訂單哦!
第一步:首先對圖像進行解析
想要打印該圖形必須要進行多層循環嵌套,分兩個部分進行打印。
第一部分為上半部分前四行,他們是遞增的關系,后半部分后三行為遞減關系,由此可以得出我們需要寫兩個打的循環。并且由于“*”位置的關系,我們必須帶入空格同時打印。所以每個部分需要兩個循環控制,即兩個大循環每個里面嵌套兩個小循環總計四個循環。
第二部:對數字進行分析
在分析之前,我們必須明白外層循環控制行數,內層循環控制列數,因此我們需要分析他的行和列。
示例代碼如下:
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); printTab(); }else{ 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(); }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+ch.length()/2); printStar(1,ch); printTab(); }else{ printBlank((level+1)/2-i); printStar(1,ch); printBlank((level+1)/2+i-1-((level+1)/2-i)-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打印菱形圖案的資料請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。