2017-04-27 3 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

코드가 수행하는 작업이므로 계속해서 작업을 계속할 수 있습니다. 중단하고 처음 시작할 수 있습니다. –

답변

0

그것의 중첩. 그것의 당신은 당신이 프로그램은

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)) { 

    ... 

    } 
} 

부분을 결코하면서 중첩 중단하지 않는 'y' 답변을 얻을 후이

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; 
     } 
    } 
} 

있다. 어쨌든 수정 된 코드는 여기에 있습니다. (모든 가능성을 시도했는데 효과가있었습니다)

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; 
       } 
      } 
     } 
    } 
}