Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复这个随机数猜测游戏使用做而循环程序?_Java - Fatal编程技术网

Java 如何修复这个随机数猜测游戏使用做而循环程序?

Java 如何修复这个随机数猜测游戏使用做而循环程序?,java,Java,创建一个程序,随机生成1-100之间的数字,并让用户猜一猜。如果用户输入的数字为“低”或“高”,则会显示一条消息告知用户。当用户猜到随机数时,告诉用户他尝试了多少次才得到那个数字。之后,询问用户是否希望再次执行此操作,如果用户确实使用生成的新随机数重复此过程 问题是,我似乎不知道如何让用户再次这样做,当我运行程序时,它似乎在代码中显示错误。如果有人能帮我解决这个问题,那就太好了。谢谢大家! 导入java.util.Scanner; 导入java.util.Random; 公共类随机猜测 { 公共

创建一个程序,随机生成1-100之间的数字,并让用户猜一猜。如果用户输入的数字为“低”或“高”,则会显示一条消息告知用户。当用户猜到随机数时,告诉用户他尝试了多少次才得到那个数字。之后,询问用户是否希望再次执行此操作,如果用户确实使用生成的新随机数重复此过程

问题是,我似乎不知道如何让用户再次这样做,当我运行程序时,它似乎在代码中显示错误。如果有人能帮我解决这个问题,那就太好了。谢谢大家!

导入java.util.Scanner; 导入java.util.Random; 公共类随机猜测 { 公共静态无效字符串[]args { 扫描仪键盘=新的ScannerSystem.in; 随机随机数=新随机数; //声明变量 int num,count=0; 最终int random=randy.nextInt100; 字符串输入; 查尔恩; //随机数 System.out.printlnNum=+随机; //标题 System.out.println随机数猜测游戏; 系统输出打印项次=; //请求用户输入 做 { System.out.printGuess随机数+ 从1到100==>; num=keyboard.nextInt; //如果用户输入的号码 //小于随机数 ifnumrandom { //显示此消息 System.out.println您的猜测太高,请重试。。。; System.out.println; } 计数++; 如果num==random { System.out.println你猜到了+ 数+猜!; 打破 } 做 { System.out.printContinue?Y或N==>; 输入=键盘.nextLine; yn=input.charAt0; } whileyn=='Y'| yn=='Y'; } 而num>1 | | num>100; } }
在没有看到显示的错误的情况下,您的代码存在一些问题。我在这些区域中添加了注释:

计数++; 如果num==random { System.out.println你猜到了+ 数+猜!; 打破 }//你应该在这里放一个 做 { System.out.printContinue?Y或N==>; 输入=键盘.nextLine; yn=input.charAt0; } whileyn==“Y”| yn==“Y”;//只要输入y,就会不断询问您是否要重试 //但它实际上不会让你尝试。 //为什么??因为如果你输入一个y,它将返回到问题。 } 而num>1 | | num>100;//这可能是随机的!=号码 } } 这是一个修订版

计数++; 如果num==random{ System.out.println你猜到了+ 数+猜!; }否则{ yn='x';//可以是y或n以外的任何值 whileyn!='y'&&yn!='n'{ System.out.printContinue?Y或N==>; 输入=键盘.nextLine; yn=input.toLowerCase.charAt0; } } } 而num!=随机&&yn=='y'; } } 希望这足以推动你前进

此外,请发布错误消息和/或描述它做错了什么,以及描述您实际希望它做什么

至于例外情况,问题是scanner.nextInt不使用您输入的号码末尾的换行符。因此,您的continue Y/N问题得到了前一行的剩余内容,即新行=>空字符串

你可以试试这个:

num=-1;//初始化数字以启用循环 而num=100{ System.out.printGuess从1到100的随机数==>; 字符串ans=keyboard.nextline; 试一试{ num=Integer.parseInt;//如果可能,将字符串转换为整数 }捕获数格式{ //如果用户的输入不能转换为整数,我们将在这里结束并显示一条错误消息。 System.out.println请输入一个整数; } } 你犯了什么错误
它显示了什么?你能告诉我错误是什么吗?每当我为第一个问题输入第一个数字时,它就会显示错误。错误显示:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 at java.base/java.lang.StringLatin1.charAtStringLatin1.java:47 at java.base/java.lang.String.charAtString.java:693 atRandomGuess.mainRandomGuess.java:57我添加了一些细节,可以解决您的异常。如果这对您有帮助,请单击答案旁边的灰色复选标记接受答案。谢谢。我想你误解了我的意思,如果用户输入的数字小于1或大于100,程序将显示一条消息,表明他们输入了无效的输入,并且当我每次输入数字都运行程序时,程序将显示错误,因此我将其改为;在我只输入了一个数字后,它会询问用户是否想继续,每次都会重复,但我尝试的是首先让用户输入数字,直到他们猜到随机数,然后询问他们是否想继续。这是可能的,我误解了你的目标,这就是为什么发布你的目标很重要,但是现在,假设你没有得到例外,希望我的答案的最后一部分会解决,你的程序将表现如下:1输入数字2检查正确性,如果正确,它将退出,否则它将说太高或太低。假设不正确,它将询问是否重试?。它会一直问这个问题,直到你回答Y或是,没有对n的测试,这将被视为与用户输入OK或X或其他任何内容相同。最后,如果输入的数字大于1或大于100,它将循环,因此如果输入任何正数,它将有效地循环。如果输入了-ve编号或0,则将退出。我的回答的其他部分提到了一些似乎不太正确的行为。所以第1步用我的答案的最后一部分来解决异常,并尝试我提到的一些输入,然后考虑我的答案的第一部分,看看它们是否帮助您的项目的其他部分。如果没有帮助,请随意忽略它们。如果您想修改提示,以便仅在猜测数字或达到猜测限制后再次播放,则需要再次播放循环作为外部循环,读取猜测循环作为内部循环,请选中“高/低”作为再次播放循环。现在,在数字猜测循环中,您已经有了播放循环。要实现目标,需要反转循环。