请注意,我对Java比较熟悉,但并不是非常出色,也不知道所有的行话。因此,请在回答中使用尽可能少的编程术语,用尽可能通俗易懂的普通英语解释,或在使用术语后解释这些术语的含义。另外,这是我第一次使用Stackoverflow,请告诉我这是否是一个不错的问题,并给我一些提示。
我正在我的高中上AP计算机科学课程,我们使用Java。最近我们学习了do-while循环,并且我刚完成了使用do-while循环的“实验室”,但是出现了一个问题。
首先,让我解释一下这个“实验室”。程序生成一个1-10之间的随机整数,用户必须猜测该数(使用扫描仪将猜测存储为int类型),有一些整数值用于跟踪猜测的数量,有多少猜测大于计算机生成的整数,有多少猜测太低。当您查看我的代码时,您会注意到我有一个
问题在于if语句比较userGen(用户猜测)和compGen。
在这个if语句中,如果用户猜测超过一次,则不会打印我编写的正确SOP。然而,我没有将这个写进程序中,它似乎是自己做的。我使用了我早先提到的compGen int被打印的SOP,并将其作为我的第一个猜测输入,它完美地工作了。if语句块中的所有内容都执行得很好并正确打印了一切。但是,当我把它作为我的第二个、第三个或任何不是第一个的猜测时,什么都没有打印出来。请看下面的代码并运行它。我不认为这应该有任何影响,但我使用的IDE是Eclipse,因此有包语句。请帮忙。
我正在我的高中上AP计算机科学课程,我们使用Java。最近我们学习了do-while循环,并且我刚完成了使用do-while循环的“实验室”,但是出现了一个问题。
首先,让我解释一下这个“实验室”。程序生成一个1-10之间的随机整数,用户必须猜测该数(使用扫描仪将猜测存储为int类型),有一些整数值用于跟踪猜测的数量,有多少猜测大于计算机生成的整数,有多少猜测太低。当您查看我的代码时,您会注意到我有一个
System.out.println(compGen);//compGen是计算机生成的整数
。目的是为了测试代码。问题在于if语句比较userGen(用户猜测)和compGen。
if(userGen==compGen)
{
//do a lot of stuff
}
在这个if语句中,如果用户猜测超过一次,则不会打印我编写的正确SOP。然而,我没有将这个写进程序中,它似乎是自己做的。我使用了我早先提到的compGen int被打印的SOP,并将其作为我的第一个猜测输入,它完美地工作了。if语句块中的所有内容都执行得很好并正确打印了一切。但是,当我把它作为我的第二个、第三个或任何不是第一个的猜测时,什么都没有打印出来。请看下面的代码并运行它。我不认为这应该有任何影响,但我使用的IDE是Eclipse,因此有包语句。请帮忙。
package Chapter_3.Lab03_Chapter3;
import java.util.*;
public class Guess
{
public static void main(String[] args)
{
Scanner userInput = new Scanner(System.in);//Scanner
int compGen = (int)(Math.random()* 10 + 1);//compGen is computer number
System.out.println(compGen); //USED TO VERIFY FAILURE. VALUE WAS ENTERED TO TEST CODE
int guessTrack = 0;//tracks number of guesses
int tooHighTrack = 0;//CREATING INTS TO TRACK STUFF
int tooLowTrack = 0;
System.out.println("Welcome to the integer guessing game that everyoone loves!");//PROMPT
System.out.println("Please enter your guess for the integer. Remeber, it is between one and ten.");//GREETING
int userGen = userInput.nextInt();//USER GUESS
do
{
guessTrack++;//Increase guess value
if(userGen > compGen)//checks user value in relation to computer generated int
{
System.out.println("Try again! Your guess was too high!");//inform user of bad guess
userGen = userInput.nextInt();//new guess
tooHighTrack++;//if guess is too high, this int tracker increases
}
else if(userGen < compGen)//checks user value in relation to computer generated int
{
System.out.println("Try again! Your guess was too low!");//inform user of guess
userGen = userInput.nextInt();//new guess
tooLowTrack++;//increases if user guess is too low
}
else if(userGen==compGen)//if both values are equivalent, execute THIS IS THE PROBLEM STATEMENT!!
{
System.out.println("Great job! You guessed the right number!");//congratulate
if(guessTrack>1)
{
System.out.println("It took you: "+guessTrack+" guess to get the right answer.");//print guess tracked int
}
else
{
System.out.println("It took you: "+guessTrack+" guesses to get the right answer.");//print guess tracked int
}
System.out.println(tooHighTrack +" guesses were too high and "+ tooLowTrack+ " were too low.");//print how many guess were too big or too low
System.out.println("HELLO"); //Used to verify failure of code
userInput.close();//close scanner object
}
}
while (userGen != compGen);//condition to be ultimately checked
}
}
我一直没能弄清楚哪里出了问题。有一次我删除了整个if语句并重新输入(我知道这不会有任何作用,但我必须尝试一下)。这个问题对我来说毫无意义。没有错误或任何弹出的东西,控制台也没有任何提示,这让我有点害怕。提前感谢。
nextInt()
在块的顶部? - UngeheueruserGen==compGen
代码正确执行。而且我仍然可以拥有“猜测太高”的代码,因为我在循环中获得了int。您真是非常聪明。 :) - Ungeheuerdo while
而不是while
,实际上已经使用了正确的工具来完成任务。我不知道你是否已经读过我在答案中添加的最后一段话。 - Felk