2017-04-27 26 views
0

好的,所以我創建了以下程序。它還沒有完成,但是當代碼到達最後(y或n部分),並且用戶決定再次嘗試時,他們沒有選擇輸入新的賭注,而只是使用第一次輸入的賭注。當循環結尾處有continue語句時,它不會從頂部重新啓動

(如果你需要幫助有關理解代碼或認爲它可能很難爲其他人瞭解請評論)

import java.util.*; 

public class Lab15 { 
    static Scanner kin = new Scanner(System.in); 

    public static void main(String[] args) { 
     double money = 1000; 
     System.out.println("Welcom To Craps You Start With 1000$!!!"); 
     int play = 1; //variable to cancel whole loop 
     char yesNo; //if user wants to continue playing or not 

     while(money > 0 && play == 1) { 
      System.out.print("Please Enter The Amount You Want To Bet: "); 
      double bet = kin.nextDouble(); 
      while((bet <= money || bet > 0)) { 
       do { //loop to test if the bet is legit 
        if(money < bet || bet < 0) { 
         System.out.print("Sorry Invalid Bet; Please Enter A Legitimant Bet: "); 
         bet = kin.nextDouble(); 
        } 
       } while(bet > money || bet < 0); 

       money -= bet; 
       System.out.println("You Have Bet $" + bet + " And Have " + money + " Left"); 

       int die1 = (1 + (int) (6 * Math.random())); 
       int die2 = (1 + (int) (3 * Math.random())); 
       int sum = die1 + die2; 
       System.out.println("You Rolled " + die1 + " and " + die2 + " totaling " + sum);    

       System.out.print("Do You Want To Play Again(y) Or Not(n)"); 
       yesNo = kin.next().charAt(0); 

       int loopBreak = 0; //to break do while loop bellow 

       do { 
        if(yesNo == 'y') { //take above yes no to restart loop or not 
         System.out.println("Restarting..."); 
         loopBreak += 1; 
         continue; 
        } 
        else if(yesNo == 'n') { 
         System.out.println("Thank You For Playing"); 
         play -= 1; //to cancel whole program 
         break; 
        } 
        else { 
         System.out.println("Please Enter 'y' Or 'n'"); 
        } 
       } while(loopBreak == 0); 

       if(play == 0) { 
        break; 
       } 
      } 
     } 
    } 
} 
+0

這就是你的代碼所做的事情,你的繼續將從do開始,繼續嘗試讓它突破並首先啓動while –

回答

0

它的所有嵌套而當它需要循環不停止。它這樣

while(money > 0 && play == 1) { 
    System.out.print("Please Enter The Amount You Want To Bet: "); 
    double bet = kin.nextDouble(); 
    while((bet <= money || bet > 0)) { 

     ... 

     do { 
      if(yesNo == 'y') { //take above yes no to restart loop or not 
       System.out.println("Restarting..."); 
       loopBreak += 1; 
       continue; 
      } 
      else if(yesNo == 'n') { 
       System.out.println("Thank You For Playing"); 
       play -= 1; //to cancel whole program 
       break; 
      } 
      else { 
       System.out.println("Please Enter 'y' Or 'n'"); 
      } 
     } while(loopBreak == 0); 

     if(play == 0) { 
      break; 
     } 
    } 
} 

後你會得到答案'y'你不破嵌套而與節目從來沒有得到過

while(money > 0 && play == 1) { 
--> System.out.print("Please Enter The Amount You Want To Bet: "); 
--> double bet = kin.nextDouble(); 
    //because below while loop continues to loop 
    while((bet <= money || bet > 0)) { 

    ... 

    } 
} 

一部分。反正更正的代碼在這裏(我嘗試了一切可能性,它的工作原理)

import java.util.*; 

public class Lab15 { 
    static Scanner kin = new Scanner(System.in); 

    public static void main(String[] args) { 
     double money = 1000; 
     System.out.println("Welcom To Craps You Start With 1000$!!!"); 
     int play = 1; //variable to cancel whole loop 
     char yesNo; //if user wants to continue playing or not 

     while(money > 0 && play == 1) { 
      System.out.print("Please Enter The Amount You Want To Bet: "); 
      double bet = kin.nextDouble(); 
      while((bet <= money || bet > 0)) { 
       do { //loop to test if the bet is legit 
        if(money < bet || bet < 0) { 
         System.out.print("Sorry Invalid Bet; Please Enter A Legitimant Bet: "); 
         bet = kin.nextDouble(); 
        } 
       } while(bet > money || bet < 0); 

       money -= bet; 
       System.out.println("You Have Bet $" + bet + " And Have " + money + " Left"); 

       int die1 = (1 + (int) (6 * Math.random())); 
       int die2 = (1 + (int) (3 * Math.random())); 
       int sum = die1 + die2; 
       System.out.println("You Rolled " + die1 + " and " + die2 + " totaling " + sum);    

       System.out.print("Do You Want To Play Again(y) Or Not(n): "); 
       yesNo = kin.next().charAt(0); 

       int loopBreak = 0; //to break do while loop bellow 

       do { 
        if(yesNo == 'y') { //take above yes no to restart loop or not 
         System.out.println("Restarting..."); 
         loopBreak++; 
         continue; 
        } 
        else if(yesNo == 'n') { 
         System.out.println("Thank You For Playing"); 
         play--; //to cancel whole program 
         break; 
        } 
        else { 
         System.out.println("Please Enter 'y' Or 'n': "); 
        } 
       } while(loopBreak == 0); 

       if(play == 0 || loopBreak == 1) { 
        break; 
       } 
      } 
     } 
    } 
} 

祝你有美好的一天!

0

另一種解決方案是使用標記的斷裂/繼續https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

然而,應當謹慎使用(或根本不)。你可能可以用其他方式簡化它。

package test.test; 

import java.util.Scanner; 

public class Lab15 { 
    static Scanner kin = new Scanner(System.in); 

    public static void main(String[] args) { 
     double money = 1000; 
     System.out.println("Welcom To Craps You Start With 1000$!!!"); 
     int play = 1; // variable to cancel whole loop 
     char yesNo; // if user wants to continue playing or not 

     //Labeled <----------------- 
     start: while (money > 0 && play == 1) { 
      System.out.print("Please Enter The Amount You Want To Bet: "); 
      double bet = kin.nextDouble(); 
      while ((bet <= money || bet > 0)) { 
       do { // loop to test if the bet is legit 
        if (money < bet || bet < 0) { 
         System.out.print("Sorry Invalid Bet; Please Enter A Legitimant Bet: "); 
         bet = kin.nextDouble(); 
        } 
       } while (bet > money || bet < 0); 

       money -= bet; 
       System.out.println("You Have Bet $" + bet + " And Have " + money + " Left"); 

       int die1 = (1 + (int) (6 * Math.random())); 
       int die2 = (1 + (int) (3 * Math.random())); 
       int sum = die1 + die2; 
       System.out.println("You Rolled " + die1 + " and " + die2 + " totaling " + sum); 

       System.out.print("Do You Want To Play Again(y) Or Not(n)"); 
       yesNo = kin.next().charAt(0); 

       int loopBreak = 0; // to break do while loop bellow 

       do { 
        if (yesNo == 'y') { // take above yes no to restart loop or not 
         System.out.println("Restarting..."); 
         loopBreak += 1; 
         //Labeled continue <----------------- 
         continue start; 
        } else if (yesNo == 'n') { 
         System.out.println("Thank You For Playing"); 
         play -= 1; // to cancel whole program 
         break; 
        } else { 
         System.out.println("Please Enter 'y' Or 'n'"); 
        } 
       } while (loopBreak == 0); 

       if (play == 0) { 
        break; 
       } 
      } 
     } 
    } 
} 
相關問題