1. 程式人生 > 程式設計 >java打印出菱形圖案例項詳解

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

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

第一步:首先對影象進行解析

想要列印該圖形必須要進行多層迴圈巢狀,分兩個部分進行列印。

第一部分為上半部分前四行,他們是遞增的關係,後半部分後三行為遞減關係,由此可以得出我們需要寫兩個打的迴圈。並且由於“*”位置的關係,我們必須帶入空格同時列印。所以每個部分需要兩個迴圈控制,即兩個大迴圈每個裡面巢狀兩個小迴圈總計四個迴圈。

第二部:對數字進行分析

在分析之前,我們必須明白外層迴圈控制行數,內層迴圈控制列數,因此我們需要分析他的行和列。

示例程式碼如下:

class ForForTest {
  public static void main(String[] args) {
     
/*
輸出如下圖形:  行數i:  空格數j:  “*”數目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); //總元素為 層數+i-1,再減去列印的空格和*號數量.
printStar(1,ch);
printTab();
}
} for(i=(level+1)/2-1;i>=1;i--){
if(i==1){
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();
}
} for(i=(level+1)/2-1;i>=1;i--){
if(i==1){
printBlank((level+1)/2-i+ch.length()/2);
printStar(1,ch);
printTab();
}
}
}
}
public static void runTest() { //判斷條件
Scanner s = new Scanner(System.in);
try{
System.out.println("請輸入要列印的層數,只能輸入大於等於3的奇數 :" );
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的奇數,請重新輸入");
System.out.println("***********************************");
runTest(); //遞迴
}
}
}

以上就是java打印出菱形圖案例項詳解的詳細內容,更多關於java列印菱形圖案的資料請關注我們其它相關文章!