愛輝網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
第一步:首先對圖像進(jìn)行解析
想要打印該圖形必須要進(jìn)行多層循環(huán)嵌套,分兩個部分進(jìn)行打印。
第一部分為上半部分前四行,他們是遞增的關(guān)系,后半部分后三行為遞減關(guān)系,由此可以得出我們需要寫兩個打的循環(huán)。并且由于“*”位置的關(guān)系,我們必須帶入空格同時打印。所以每個部分需要兩個循環(huán)控制,即兩個大循環(huán)每個里面嵌套兩個小循環(huán)總計四個循環(huán)。
第二部:對數(shù)字進(jìn)行分析
在分析之前,我們必須明白外層循環(huán)控制行數(shù),內(nèi)層循環(huán)控制列數(shù),因此我們需要分析他的行和列。
示例代碼如下:
class ForForTest { public static void main(String[] args) { /* 輸出如下圖形: 行數(shù)i: 空格數(shù)j: “*”數(shù)目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); //總元素為 層數(shù)+i-1,再減去打印的空格和*號數(shù)量. 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); //總元素為 層數(shù)+i-1,再減去打印的空格和*號數(shù)量. 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("請輸入要打印的層數(shù),只能輸入大于等于3的奇數(shù) :" ); 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的奇數(shù),請重新輸入"); System.out.println("***********************************"); runTest(); //遞歸 } } }
以上就是java打印出菱形圖案實例詳解的詳細(xì)內(nèi)容,更多關(guān)于java打印菱形圖案的資料請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!