Java 猜谜游戏,带一个While循环
我目前正在尝试为我的程序创建一个while循环,一个猜谜游戏。我将其设置为用户可以创建一个最大值,即1-500,然后用户可以继续猜测数字。当猜到数字时,用户可以按1关闭,或按其他任何键继续再次运行循环 我的问题是,代码在尝试继续循环时给了我一个错误,没有编译错误 这是我的代码:Java 猜谜游戏,带一个While循环,java,game-engine,Java,Game Engine,我目前正在尝试为我的程序创建一个while循环,一个猜谜游戏。我将其设置为用户可以创建一个最大值,即1-500,然后用户可以继续猜测数字。当猜到数字时,用户可以按1关闭,或按其他任何键继续再次运行循环 我的问题是,代码在尝试继续循环时给了我一个错误,没有编译错误 这是我的代码: import java.util.Random; import java.util.Scanner; public class Gættespil2 { public static void main(Strin
import java.util.Random;
import java.util.Scanner;
public class Gættespil2
{
public static void main(String[] args)
{
Random rand = new Random();
int TAL = rand.nextInt(20) + 1;
int FORSØG = 0;
Scanner input = new Scanner (System.in);
int guess;
int loft;
boolean win = false;
boolean keepPlaying = true;
while ( keepPlaying )
{
Scanner tastatur = new Scanner(System.in);
System.out.print("Indsæt loftets højeste værdi : ");
loft = tastatur.nextInt();
TAL = (int) (Math.random() * loft + 1);
while (win == false)
{
System.out.println(" Gæt et tal mellem 1 og "+ loft + "):: ");
guess = input.nextInt();
FORSØG++;
if (guess == TAL)
{
win = true;
}
else if (guess < TAL)
{
System.out.println("Koldere, gæt igen");
}
else if (guess > TAL) {
System.out.println("Varmere, Gæt igen!!");
}
}
System.out.println(" Tillykke du vandt...endeligt!!! ");
System.out.println(" tallet var" + TAL);
System.out.println(" du brugte " + FORSØG + " forsøg");
System.out.println("Slut spillet? tast 1.");
System.out.println("tryk på hvadsomhelst for at spille videre");
int userInt = input.nextInt();
if( userInt == 1)
{
keepPlaying = false;
}
}
}
}
答案很简单。在玩家成功完成第一轮后开始第二轮之前,您没有初始化“keepPlaying”循环中的所有必要值。请参见下面的代码注释:
import java.util.Random;
import java.util.Scanner;
public class GuessingGame
{
public static void main(String[] args)
{
Random rand = new Random();
int TAL = rand.nextInt(20) + 1;
int FORSØG = 0;
Scanner input = new Scanner (System.in);
int guess;
int loft;
boolean win = false;
boolean keepPlaying = true;
while ( keepPlaying )
{
Scanner tastatur = new Scanner(System.in);
System.out.print("Enter a maximum limit: ");
loft = tastatur.nextInt();
TAL = (int) (Math.random() * loft + 1);
// *** LOOK HERE ***
// Reset the 'win' flag here, otherwise the player receives an
// automatic win on all subsequent rounds following the first
win = false;
while (win == false)
{
System.out.println("Guess the number between one and "+ loft + "):: ");
guess = input.nextInt();
FORSØG++;
if (guess == TAL)
{
win = true;
}
else if (guess < TAL)
{
System.out.println("Colder, guess again!");
}
else if (guess > TAL) {
System.out.println("Warmer, guess again!");
}
}
System.out.println("You've found the number!");
System.out.println("The number was: " + TAL + ".");
System.out.println("You guessed " + FORSØG + " times.");
System.out.println("To quit, enter 1.");
System.out.println("Provide any other input to play again.");
int userInt = input.nextInt();
if( userInt == 1)
{
keepPlaying = false;
}
}
}
}
很抱歉翻译成英语-我必须确保我读的东西是正确的。你可能还想用更高和更低的温度来代替更高和更冷的温度。温度越高和温度越低,则越接近正确答案,而不是正确答案所在的方向。您能否更具体地说明收到的错误以及错误所指的线?另外,你能编辑你的代码使其正确缩进吗?现在很难阅读。瑞典语让阅读变得格外困难:听起来不粗鲁,但这对大多数英语读者来说是极其困难的,你至少可以更详细地了解一下你的代码在做什么吗?indsæt loftets højeste værdi:1//我输入了值1,所以程序选择了一个介于1-1 Gæt et tal mellem 1 og 1之间的随机数://猜数字1 tillyke du vandt…endeligt!!!//格拉茨:数字是1塔利特·瓦勒1杜布鲁特1福斯·格/用过1次尝试荡妇斯皮莱?品味1./要结束,请按1;要继续,请按其他任何键。tryk påhvadsomhelst for at spille videre当我点击其他任何东西时,它会从我输入最高值开始,当点击enter时,它只完成了整个While循环,显示了数字,我没有猜到。该程序基本上运行循环,但不允许用户第二次猜,相反,它只是显示数字。复制我的代码并运行它。我已经帮你修好了。请注意,除了英文翻译,我添加了一行,如下所述。如果你做一个区分,你会看到那一行,即使我没有让你看得很清楚。