java – do-while循环问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – do-while循环问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4298字,纯文字阅读大概需要7分钟。
内容图文
![java – do-while循环问题](/upload/InfoBanner/zyjiaocheng/756/49f98fa3281e4091ab2ee141db1166d1.jpg)
请注意,虽然我对Java感到满意,但我并不是特别有天赋,也不知道所有的行话,所以请用很少的编码器术语和正常的英语解释你的答案,或解释你使用它后的行话意味着什么.此外,这是我第一次使用Stackoverflow,所以让我知道这是一个不错的问题,并给我一些指示.
我正在上高中读AP计算机科学课.我们使用Java.我们最近教过do-while循环,我刚刚完成了使用do-while循环的“lab”,但是,有一个问题.
首先,让我解释一下实验室.程序生成一个1-10之间的随机整数,用户必须猜测(猜测是使用扫描仪存储为int),有几个整数值跟踪猜测数量,多少猜测大于计算机整数,以及有多少太低了.当你查看我的代码时,你会注意到我有一个System.out.println(compGen); // compGen是计算机生成的int.目的是测试代码.
问题出在比较userGen(用户猜测)和compGen的if语句中.
if(userGen==compGen)
{
//do a lot of stuff
}
在这个if语句中,如果用户不止一次猜到,它就不会打印我写的正确的SOP.但是,我没有把这个写入程序,它似乎是自己做的.我使用了早期提到的SOP,其中打印了compGen int,我输入的是我的第一个猜测,它完美地工作. if语句块中的所有内容都完美执行并正确打印所有内容.然而,当我把它作为我的第二个猜测,第三个猜测或任何不是第一个的猜测时,打印出了NOTHING.请参阅下面的代码并运行它.我不相信这会有所作为,但我使用的IDE是Eclipse,因此是package语句.请帮忙.
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语句并重新输入它(我知道它不会做任何事情,但我必须尝试).这个问题对我没有意义.没有错误或任何弹出的东西,控制台上没有任何东西弹出让我有点害怕.提前致谢.
解决方法:
首先,你在这里放了很多文字.也许尝试下次作为建议尽量减少问题;)否则一切都很好
对你的问题.让我最小化你的代码,然后向你解释,会发生什么.
1.守则
int val = scanner.nextInt();
do {
if (val < 5) {
// too low
val = scanner.nextInt();
} else if (val > 5) {
// too high
val = scanner.nextInt();
} else {
// correct
// THIS CODE DOESN'T RUN?!
}
} while (val != 5);
2.您的代码有什么作用?
你在循环之前读了你的第一个数字.没关系.然后,输入if-elseif-else语句.注意,一旦进入其中一个块,其他块就不会被执行.现在的问题是,您在if-elseif中读取了下一个用户输入!程序读取下一个值并留下整个if-elseif-else.您的代码不会执行,因为循环然后在下一次迭代之前结束,因此正确的用户输入根本不会通过if-elseif-else.
3.解决方案
删除所有nextInt()读取,只有一个作为循环内的第一件事:
int val;
do {
val = scanner.nextInt();
if (val < 5) {
// too low
} else if (val > 5) {
// too high
} else {
// correct
// THIS CODE RUNS NOW!
}
} while (val != 5);
这样的事情,在检查循环条件之前需要至少执行一次的结构,通常使用do while循环而不是while循环来完成
内容总结
以上是互联网集市为您收集整理的java – do-while循环问题全部内容,希望文章能够帮你解决java – do-while循环问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。