ランダムロール番号を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ループを使用して、最初の実行後にユーザーが再生できるようにしたいですか?
System.inから新しいスキャナを作成する必要はありません。作成したスキャナオブジェクトと同じスキャナオブジェクトを使用してください。 –
リプレイ== "y"を使用している場合、replay.equals( "y")、 String replay = in.next();を配置する必要があります。論理の中で –
私が提出した答えをチェックアウトします。私はあなたのコードをすべて少し修正して使用しました。 –