欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java打印出菱形圖案實(shí)例詳解

 更新時(shí)間:2020年02月25日 08:41:02   作者:V  
在本篇文章里小編給大家分享的是關(guān)于java打印出菱形圖案實(shí)例詳解,需要的朋友們可以學(xué)習(xí)下。

第一步:首先對(duì)圖像進(jìn)行解析

想要打印該圖形必須要進(jìn)行多層循環(huán)嵌套,分兩個(gè)部分進(jìn)行打印。

第一部分為上半部分前四行,他們是遞增的關(guān)系,后半部分后三行為遞減關(guān)系,由此可以得出我們需要寫兩個(gè)打的循環(huán)。并且由于“*”位置的關(guān)系,我們必須帶入空格同時(shí)打印。所以每個(gè)部分需要兩個(gè)循環(huán)控制,即兩個(gè)大循環(huán)每個(gè)里面嵌套兩個(gè)小循環(huán)總計(jì)四個(gè)循環(huán)。

第二部:對(duì)數(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();
    }
  }
}

實(shí)例補(bǔ)充

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,再減去打印的空格和*號(hào)數(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,再減去打印的空格和*號(hào)數(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("請(qǐng)輸入要打印的層數(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("請(qǐng)輸入要打印的形狀:" );
                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("輸入有誤!!!不能包含漢字字符,請(qǐng)重新輸入");
                    System.out.println("***********************************");
                    runTest(); //遞歸
                }
            }else if(str.matches("[-9-0]+")){ //
                throw new Exception();
            }
        }catch (Exception e) {
            System.out.println(" 輸入有誤!!!只能輸入大于等于3的奇數(shù),請(qǐng)重新輸入");
            System.out.println("***********************************");
            runTest(); //遞歸
        }
    }
    }

以上就是java打印出菱形圖案實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于java打印菱形圖案的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式

    淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式

    內(nèi)存泄漏就是我們申請(qǐng)了內(nèi)存,但是該內(nèi)存一直無(wú)法釋放,就會(huì)導(dǎo)致內(nèi)存溢出問(wèn)題,本文詳細(xì)的介紹了ThreadLocal內(nèi)存泄露的原因及處理方式,感興趣的可以了解一下
    2023-05-05
  • SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決

    SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決

    這篇文章主要介紹了SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解析Java多線程之常見(jiàn)鎖策略與CAS中的ABA問(wèn)題

    解析Java多線程之常見(jiàn)鎖策略與CAS中的ABA問(wèn)題

    本篇文章介紹了常見(jiàn)的鎖策略,并說(shuō)明了synchronized關(guān)鍵字加的鎖類型不是單一一種鎖類型的,根據(jù)可重入鎖與非可重入鎖引出了死鎖的概念與死鎖條件,最后介紹了CAS指令以及CAS鎖產(chǎn)生的ABA問(wèn)題及其解決方案,需要的朋友可以參考下
    2022-06-06
  • SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問(wèn)題的解決方案

    SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問(wèn)題的解決方案

    在使用 Knife4j 為 Spring Boot 項(xiàng)目生成 API 文檔時(shí),開(kāi)發(fā)者可能會(huì)遇到文件上傳功能不顯示文件域的問(wèn)題,本文將詳細(xì)介紹如何解決這一問(wèn)題,并提供完整的解決方案,需要的朋友可以參考下
    2025-05-05
  • IDEA新建javaWeb以及Servlet簡(jiǎn)單實(shí)現(xiàn)小結(jié)

    IDEA新建javaWeb以及Servlet簡(jiǎn)單實(shí)現(xiàn)小結(jié)

    這篇文章主要介紹了IDEA新建javaWeb以及Servlet簡(jiǎn)單實(shí)現(xiàn)小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • SpringBoot實(shí)現(xiàn)熱部署詳解

    SpringBoot實(shí)現(xiàn)熱部署詳解

    SpringBoot熱部署是一種開(kāi)發(fā)時(shí)極為有用的功能,它能夠讓開(kāi)發(fā)人員在代碼修改后無(wú)需手動(dòng)重啟應(yīng)用程序就能立即看到變化的效果,所以我本文就給打擊介紹一下為什么要使用熱部署以及實(shí)現(xiàn)熱部署的方式,需要的朋友可以參考下
    2023-07-07
  • 解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題

    解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題

    這篇文章主要介紹了解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • MyBatis 中  type-aliases-package的作用(簡(jiǎn)化類型映射)

    MyBatis 中  type-aliases-package的作用(簡(jiǎn)化類型映射)

    MyBatis中type-aliases-package的作用是簡(jiǎn)化類型映射,通過(guò)指定包路徑,MyBatis會(huì)自動(dòng)掃描該包下的所有類并為這些類生成類型別名,減少XML配置文件中的冗長(zhǎng)代碼,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Mybatis如何一次性插入多條數(shù)據(jù)

    Mybatis如何一次性插入多條數(shù)據(jù)

    這篇文章主要介紹了Mybatis如何一次性插入多條數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Sentinel熱門詞匯限流的實(shí)現(xiàn)詳解

    Sentinel熱門詞匯限流的實(shí)現(xiàn)詳解

    這篇文章主要介紹了使用Sentinel對(duì)熱門詞匯進(jìn)行限流的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論