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

java打印出菱形圖案實例詳解

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

第一步:首先對圖像進行解析

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

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

第二部:對數(shù)字進行分析

在分析之前,我們必須明白外層循環(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打印出菱形圖案實例詳解的詳細內(nèi)容,更多關(guān)于java打印菱形圖案的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • spring注解@Service注解的使用解析

    spring注解@Service注解的使用解析

    這篇文章主要介紹了spring注解@Service注解的使用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java進行Appium自動化測試的實現(xiàn)

    Java進行Appium自動化測試的實現(xiàn)

    這篇文章主要介紹了Java進行Appium自動化測試的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解Spring cloud使用Ribbon進行Restful請求

    詳解Spring cloud使用Ribbon進行Restful請求

    這篇文章主要介紹了詳解Spring cloud使用Ribbon進行Restful請求,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java 位運算符>>與>>>區(qū)別案例詳解

    Java 位運算符>>與>>>區(qū)別案例詳解

    這篇文章主要介紹了Java 位運算符>>與>>>區(qū)別案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺談自定義校驗注解ConstraintValidator

    淺談自定義校驗注解ConstraintValidator

    鑒于通用性和普遍性,Spring框架提供了validator組件,通過一些校驗器,可以對一些數(shù)據(jù)進行統(tǒng)一的完整性和有效性等校驗,即簡單又好用
    2021-06-06
  • Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    實體類中有一個 List<String> 類型的屬性,對應(yīng)于 MySQL 表里的 varchar 字段,使用 MyBatis 添加或查詢時能互相轉(zhuǎn)換,本文給大家介紹Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案,需要的朋友可以參考下
    2024-06-06
  • 使用eclipse導(dǎo)入javaWeb項目的圖文教程

    使用eclipse導(dǎo)入javaWeb項目的圖文教程

    這篇文章主要介紹了如何使用eclipse導(dǎo)入別人的javaWeb項目,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java基礎(chǔ)教程之包(package)

    Java基礎(chǔ)教程之包(package)

    這篇文章主要介紹了Java基礎(chǔ)教程之包(package),本文詳細講解了包的創(chuàng)建、使用等方法,需要的朋友可以參考下
    2014-08-08
  • JAVA后端學(xué)習(xí)精華之網(wǎng)絡(luò)通信項目進階

    JAVA后端學(xué)習(xí)精華之網(wǎng)絡(luò)通信項目進階

    不同項目之間的通信方式分為,http、socket、webservice;其中socket通信的效率最高,youtube就采用的是原始的socket通信,他們信奉的原則是簡單有效
    2021-09-09
  • SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼

    SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼

    這篇文章主要介紹了SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論