JAVA用for循環(huán)打印空心菱形
空心菱形如圖所示
那么我們應(yīng)該如何去寫出來呢?這就不得不引出一個(gè)非常經(jīng)典的案例,金字塔案例,菱形像不像是兩個(gè)對稱的金字塔呢?廢話不多說了,上思路:(僅代表個(gè)人理解,歡迎指點(diǎn))
1.首先我們要寫出一個(gè)空心菱形,那么我們首先得把需求由繁化簡,把他拆分成一個(gè)一個(gè)簡單的需求,
1.1那我們就先寫半個(gè)金字塔,
是不是很眼熟的結(jié)構(gòu),沒錯(cuò)和九九乘法表類似的結(jié)構(gòu),上代碼
for(int i = 1;i <= 5;i++){ //i代表層數(shù),這個(gè)可以設(shè)置一個(gè)變量接收,隨便幾層都行,不一定非要是5 for(int j = 1;j <= i;j++){ //j代表個(gè)數(shù) System.out.print("*"); } System.out.print("\n"); //System.out.println(" ");這樣也行 }
半個(gè)金字塔出來了,那我們接下來就寫一個(gè)完整的空心金字塔
//輸出一個(gè)空心金字塔 //思路分析: //1.補(bǔ)全金字塔 // * //空格數(shù)為 總層數(shù) - 1 //個(gè)數(shù)為 1 3 5 7 9 什么規(guī)律呢 就是 2 * 當(dāng)前層數(shù) - 1 // *** //空格數(shù)為 總層數(shù) - 1 // ***** // ******* //********* //2.將金字塔鏤空 // * 第一層 1個(gè) // * * 第二次 2個(gè) // * *第三層 2個(gè) // .... 第n層 2個(gè) //*********最后一層 全部有 //大致就是這個(gè)圖形,(圖形不準(zhǔn)確,請自行腦補(bǔ)) for(int i = 1;i <= 5;i++){// i是層數(shù) //打印出每層前面的空格數(shù) for(int k = 1;k <= 5 - i;k++){ System.out.print(" "); } //控制每層打印的個(gè)數(shù) for(int j = 1;j <= 2 * i - 1;j++){ //j是個(gè)數(shù) //空心金字塔都是第一個(gè)和最后一個(gè)位置有*,最后一層則是全部輸出 if(j == 1 || j == 2 * i - 1|| i == 5){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.print("\n"); }
那么菱形就已經(jīng)很簡單了 我們只需要把空心金字塔最后一層的全部輸出去掉 也就是 i == 5注銷,就得到這么一個(gè)東西
菱形的工作已經(jīng)完成了大半,接下來照貓畫虎把下半部分寫出來就可以了
for(int a = 4;a > 0;a--){ //打印空格 for(int c = 1;c <= 5 - a;c++){ System.out.print(" "); } for(int b = 1;b <= 2 * a -1;b++){ if( b ==1 || b == 2 * a -1){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.print("\n"); }
雖然菱形的下半部分是一個(gè)倒過來的金字塔, 但是其規(guī)律并沒有發(fā)生變化,空格數(shù)依舊是總層數(shù) - 1
個(gè)數(shù)也沒有發(fā)生變化,就是順序倒過來,把++改成--就好了
完整的代碼:
for(int i = 1;i <= 5; i++){ //控制前面的空格數(shù) for(int k = 1;k <= 5 - i;k++){ System.out.print(" "); } //控制每行輸出的*的個(gè)數(shù) for(int j = 1;j <= 2 * i - 1;j++){ //每行第一個(gè)和最后一個(gè)位置有*,最后一行全有 if(j == 1 || j == 2 * i - 1){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.print("\n"); } for(int a = 4;a > 0;a--){ //打印空格 for(int c = 1;c <= 5 - a;c++){ System.out.print(" "); } for(int b = 1;b <= 2 * a -1;b++){ if( b ==1 || b == 2 * a -1){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.print("\n"); }
到此這篇關(guān)于JAVA用for循環(huán)打印空心菱形的文章就介紹到這了,更多相關(guān)JAVA for循環(huán)輸出菱形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄
這篇文章主要介紹了Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04詳解spring boot starter redis配置文件
spring-boot-starter-Redis主要是通過配置RedisConnectionFactory中的相關(guān)參數(shù)去實(shí)現(xiàn)連接redis service。下面通過本文給大家介紹在spring boot的配置文件中redis的基本配置,需要的的朋友參考下2017-07-07IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟
這篇文章主要介紹了IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟,首先安裝GenerateSerialVersionUID插件,當(dāng)出現(xiàn)添加serialVersionUID選項(xiàng),選中則會(huì)自動(dòng)生成serialVersionUID,感興趣的朋友一起學(xué)習(xí)下吧2024-02-02Java利用位運(yùn)算實(shí)現(xiàn)加減乘除的方法詳解
我們經(jīng)常使用的加減乘除,我們所看到的只是表面的效果,那么加減乘除在底層究竟是怎么實(shí)現(xiàn)的?今天就讓我們一探究竟2022-08-08