2014-09-06 255 views
0

我有這個java代碼,基本上只是打印X高度的聖誕樹。然而,程序要求的數字,然後打印樹,然後就結束了。我會喜歡它循環,直到我輸入0,這將結束該程序,並且我還希望只在輸入的數字是1-40(不超過40)時纔打印它。我開始在java世界中,但我不知道怎麼辦that.Heres我的代碼現在:循環程序,直到0(退出)(java)

public class xtree { 

    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(in); 
     out.print("please enter a number: "); 
     int temp = scan.nextInt(); 
     int x = (temp-1)*2 +1; 
     int y = x/2; 
     int z = 1; 
     for(int i=0; i<temp-1; i++) 
     { 
      for(int j=0; j<=y; j++) 
      { 
       out.print(" "); 
      } 
      for(int k = 0; k<z; k++) 
      { 
       out.print("*"); 
      } 
      out.println(); 
      y--; 
      z+=2; 
     } 
     for(int i =0; i<=x/2; i++) 
     { 
      out.print(" "); 
     } 
     out.println("*"); 
    } 
} 

謝謝你,我是一個初學者到Java,所以請手下留情;)

回答

0

使用while循環:

Scanner scan = new Scanner(System.in); 
    System.out.print("please enter a number: "); 

    int temp = scan.nextInt(); 
    while (temp>0) { 
     int x = (temp-1)*2 +1; 
     int y = x/2; 
     int z = 1; 
     for(int i=0; i<temp-1; i++) 
     { 
      for(int j=0; j<=y; j++) 
      { 
       System.out.print(" "); 
      } 
      for(int k = 0; k<z; k++) 
      { 
       System.out.print("*"); 
      } 
      System.out.println(); 
      y--; 
      z+=2; 
     } 
     for(int i =0; i<=x/2; i++) 
     { 
      System.out.print(" "); 
     } 
     System.out.println("*"); 
     temp = scan.nextInt(); 
    } 
3

嗯,我會的方式進行分離成兩個:

  • 一個printChristmasTree方法,它接受的高度作爲參數
  • main方法,它只是記錄用戶輸入並調用printChristmasTree交易或退出

大多數當前的main方法將進入printChristmasTreemain將b一個循環。喜歡的東西:

public static void main(String[] args) { 
    Scanner scan = new Scanner(in); 
    while (true) { 
     System.out.print("Please enter a number (0-40): "); 
     int height = scan.nextInt(); 
     if (height == 0) { 
      // Exit the program 
      return; 
     } else if (height >= 1 && height <= 40) { 
      printChristmasTree(height); 
     } else { 
      System.out.println("Invalid input."); 
     } 
    } 
} 

有可以使用的,而不是從while (true)環回其他的方法,但是這看起來最簡單的給我。

在我看來,將「輸入輸入」與「打印聖誕樹」方面的分離導致了更多的可讀代碼,而不是將它們合併在一起,並且在諸如編寫不同程序打印全部有效的聖誕樹。

0

下面的代碼做這件事:

public class xtree { 

    public static void main(String[] args) 
    { 
     int temp; 
     do{ 
      Scanner scan = new Scanner(in); 
      out.print("please enter a number: "); 
      temp = scan.nextInt(); 

      if(temp >= 1 && temp <= 40){ //don't display a tree higher than 40 
       int x = (temp-1)*2 +1; 
       int y = x/2; 
       int z = 1; 
       for(int i=0; i<temp-1; i++) 
       { 
        for(int j=0; j<=y; j++) 
        { 
         out.print(" "); 
        } 
        for(int k = 0; k<z; k++) 
        { 
         out.print("*"); 
        } 
        out.println(); 
        y--; 
        z+=2; 
       } 
       for(int i =0; i<=x/2; i++) 
       { 
        out.print(" "); 
       } 
       out.println("*"); 
      }else if(temp != 0){ 
       out.print("Please enter a number between 1 and 40!"); 
      } 
     }while(temp != 0); 
    } 
} 
+0

感謝您的幫助,這個工作,但是我去了輸入0,這仍然返回錯誤信息請輸入1和40之間的數字!退出前;我怎麼能不輸入錯誤信息就退出?感謝 – 2014-09-07 18:29:44

+0

我已經編輯了答案,只是改變 ...}否則{... 到 }否則,如果(溫度!= 0){ 這應該現在的工作;) – Philipp 2014-09-08 19:35:44