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

第一步:首先對圖像進行解析
想要打印該圖形必須要進行多層循環(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)文章
淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式
內(nèi)存泄漏就是我們申請了內(nèi)存,但是該內(nèi)存一直無法釋放,就會導致內(nèi)存溢出問題,本文詳細的介紹了ThreadLocal內(nèi)存泄露的原因及處理方式,感興趣的可以了解一下2023-05-05
SpringBoot接口路徑重復(fù),啟動服務(wù)器失敗的解決
這篇文章主要介紹了SpringBoot接口路徑重復(fù),啟動服務(wù)器失敗的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot集成Knife4j報錯:文件上傳不顯示文件域問題的解決方案
在使用 Knife4j 為 Spring Boot 項目生成 API 文檔時,開發(fā)者可能會遇到文件上傳功能不顯示文件域的問題,本文將詳細介紹如何解決這一問題,并提供完整的解決方案,需要的朋友可以參考下2025-05-05
IDEA新建javaWeb以及Servlet簡單實現(xiàn)小結(jié)
這篇文章主要介紹了IDEA新建javaWeb以及Servlet簡單實現(xiàn)小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
解決spring cloud gateway 獲取body內(nèi)容并修改的問題
這篇文章主要介紹了解決spring cloud gateway 獲取body內(nèi)容并修改的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
MyBatis 中 type-aliases-package的作用(簡化類型映射)
MyBatis中type-aliases-package的作用是簡化類型映射,通過指定包路徑,MyBatis會自動掃描該包下的所有類并為這些類生成類型別名,減少XML配置文件中的冗長代碼,感興趣的朋友跟隨小編一起看看吧2024-11-11

