2017-12-14 24 views
1

ランダムロール番号を1 &の間で印刷するゲームを作成しました。システムは、ユーザーがより高い[1]またはそれより低い[2]を推測するかどうかをユーザーに尋ねます。 2番目のロール番号を入力します。彼らの推測に基づいて、システムは "Draw!"、 "あなたは間違って推測した"のいずれかを印刷します。または「あなたは正しく推測しました」。どのように2つの場合、ネストされた条項使用して正常に動作する:私は、ユーザーに彼らがそう[Y]または[n]を入力することにより、希望する場合は、再度プレイする機会を与えたいけど複数のスキャナーDoWhile HiLo(片面サイコロゲーム)

public class Short { 
public static void main(String args[]) { 

     //roll one 
     int rNum1 = (int)(Math.random() * 11); //declare random roll one, gives result between 1 and 10 

     //print roll one 
     System.out.println("You roll the 10-sided die."); 
     System.out.println("It lands on " + rNum1 + "."); 
     System.out.println(); //space 

     //User guess 
     Scanner choice = new Scanner (System.in); 
     System.out.println("Will a second die roll higher or lower?"); 
     System.out.println("To guess higher enter [1], or to guess lower, enter [2]."); 

     //roll two 
     int rNum2 = (int)(Math.random() * 11); //declare random roll two 
     int guess = choice.nextInt(); //user's guess/HiLo 

     //print roll two 
     System.out.println(); //space 
     System.out.println("You roll the die again."); 
     System.out.println("It lands on " + rNum2 + "."); 
     System.out.println(); //space 

    if (guess == 1) //guessed higher 
    { 
     if (rNum1 == rNum2) 
     { 
      System.out.println("Draw!"); 
     } 
     else if (rNum1 > rNum2) 
     { 
      System.out.println("You guessed wrongly."); 
     } 
     else 
     { 
      System.out.println("You guessed correctly!"); 
     } 
    } 

    if (guess == 2) //guessed lower 
    { 
     if (rNum1 == rNum2) 
     { 
      System.out.println("Draw!"); 
     } 
     else if (rNum1 > rNum2) 
     { 
      System.out.println("You guessed correctly!"); 
     } 
     else 
     { 
      System.out.println("You guessed wrongly."); 
     } 
    } 
} 

を。私は、この宣言第2のスキャナ(「リプレイ」)を達成するために、DO-whileループを使用しようとしました:

import java.util.*; 
import java.util.Random; 
import java.util.Scanner; 
public class Short { 
public static void main(String args[]) { 
    Scanner in = new Scanner (System.in); 
    String replay = in.next(); //game replay scanner 

    do{ 

     //roll one 
     int rNum1 = (int)(Math.random() * 11); //declare random roll one, gives result between 1 and 10 

     //print roll one 
     System.out.println("You roll the 10-sided die."); 
     System.out.println("It lands on " + rNum1 + "."); 
     System.out.println(); //space 

     //User guess 
     Scanner choice = new Scanner (System.in); 
     System.out.println("Will a second die roll higher or lower?"); 
     System.out.println("To guess higher enter [1], or to guess lower, enter [2]."); 

     //roll two 
     int rNum2 = (int)(Math.random() * 11); //declare random roll two 
     int guess = choice.nextInt(); //user's guess/HiLo 

     //print roll two 
     System.out.println(); //space 
     System.out.println("You roll the die again."); 
     System.out.println("It lands on " + rNum2 + "."); 
     System.out.println(); //space 

    if (guess == 1) //guessed higher 
    { 
     if (rNum1 == rNum2) 
     { 
      System.out.println("Draw!"); 
     } 
     else if (rNum1 > rNum2) 
     { 
      System.out.println("You guessed wrongly."); 
     } 
     else 
     { 
      System.out.println("You guessed correctly!"); 
     } 
    } 

    if (guess == 2) //guessed lower 
    { 
     if (rNum1 == rNum2) 
     { 
      System.out.println("Draw!"); 
     } 
     else if (rNum1 > rNum2) 
     { 
      System.out.println("You guessed correctly!"); 
     } 
     else 
     { 
      System.out.println("You guessed wrongly."); 
     } 
    } 
    System.out.println("Would you like to play again? Enter [y] for yes."); 
}while(replay == "y"); 
} 

無限ループなどが全体のループintialises。複数のスキャナを使って私のダウハイルをどうやって修正するのですか?私はJavaのかなりの騒ぎであることを実感します。 do whileループを使用して、最初の実行後にユーザーが再生できるようにしたいですか?

+0

System.inから新しいスキャナを作成する必要はありません。作成したスキャナオブジェクトと同じスキャナオブジェクトを使用してください。 –

+1

リプレイ== "y"を使用している場合、replay.equals( "y")、 String replay = in.next();を配置する必要があります。論理の中で –

+0

私が提出した答えをチェックアウトします。私はあなたのコードをすべて少し修正して使用しました。 –

答えて

-1

入力をしていないユーザーにプロンプ​​トを表示した後。それを確認する前に彼の返信を読んでください。 無限ループは、ユーザーの最初の返信が「y」だったためにループが無限に実行されるか、まったく実行されない(最初の返信が「n」の場合)

0

あなたは近くでしたが、 nextLine()を使用してスキャナオブジェクトに入力し、入力を解析して整数に変換します。最後に、ユーザーがもう一度再生したいかどうかを確認するだけです。

 String replay = "y"; 
     Scanner choice = new Scanner (System.in); 
     while(replay.equals("y")) 
     { 

      //roll one 
      int rNum1 = (int)(Math.random() * 11); //declare random roll one, gives result between 1 and 10 

      //print roll one 
      System.out.println("You roll the 10-sided die."); 
      System.out.println("It lands on " + rNum1 + "."); 
      System.out.println(); //space 

      //User guess 
      System.out.println("Will a second die roll higher or lower?"); 
      System.out.println("To guess higher enter [1], or to guess lower, enter [2]."); 

      //roll two 
      int rNum2 = (int)(Math.random() * 11); //declare random roll two 
      int guess = Integer.parseInt(choice.nextLine()); //user's guess/HiLo 

      //print roll two 
      System.out.println(); //space 
      System.out.println("You roll the die again."); 
      System.out.println("It lands on " + rNum2 + "."); 
      System.out.println(); //space 

      if (guess == 1) //guessed higher 
      { 
       if (rNum1 == rNum2) 
       { 
        System.out.println("Draw!"); 
       } 
       else if (rNum1 > rNum2) 
       { 
        System.out.println("You guessed wrongly."); 
       } 
       else 
       { 
        System.out.println("You guessed correctly!"); 
       } 
      } 

      if (guess == 2) //guessed lower 
      { 
       if (rNum1 == rNum2) 
       { 
        System.out.println("Draw!"); 
       } 
       else if (rNum1 > rNum2) 
       { 
        System.out.println("You guessed correctly!"); 
       } 
       else 
       { 
        System.out.println("You guessed wrongly."); 
       } 
      } 
      System.out.println("Would you like to play again? Enter [y] for yes."); 
      replay = choice.nextLine(); 
     } 
0

もう一度再生するように要求する際に、コードを 'while'ループでカプセル化します。

boolean playAgain = true;

while (playAgain == true) 
    { 
     your code... 
    ...... 
    ""Ask the user if they wish to play again (y/n), and change this to true or false accordingly. 

これにより、プレイヤーが再びプレイしたくない場合にゲームがループオーバーするようになります。