我写了一个猜数字的程序,但是在运行时候出了问题,猜完第一轮,问是否继续。按y,它不能正常运行第二轮。
在运行cmd 下编译时可以运行第二轮,但是再第三轮以后按 n 退出时不能退出。我觉得应该是 System.in.skip(2); 没能跳过回车的问题。我把 “2”改为“4”了也没有用
麻烦各位帮我看一下,代码如下:/**
* 名称:猜数字
* 功能:输入1~100的数,错了提示大小;
* 3次后结束,并询问是否继续
*
* BUG :3次后,输入y(继续)时不能继续。
* 应该是:"System.in.skip(2);" 没有跳过回车导致
*/import java.io.*;class GuessNumBreak{
public static void main(String args[])throws IOException{
boolean again=false;loop1: do{
int trueNum = (int)(Math.random()*100);//产生随机数
System.out.println("游戏开始了!");
int i=3;
do{
System.out.println("请输入0~100之间的整数:(退出游戏请按N)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
int guessNum=0;
try{
str = br.readLine();
}catch(IOException e){
e.printStackTrace();
}
if(str.equalsIgnoreCase("N")){ //用户输入字母n
break loop1; //跳出外层循环,结束游戏
}
else {
guessNum = Integer.parseInt(str);
}
if (guessNum==trueNum) {
System.out.println("恭喜您!猜中了!");
break;
}
else {
if(guessNum>trueNum) {System.out.println("很遗憾偏大了!"+guessNum);}
else {System.out.println("很遗憾偏小了!");}
i--;
System.out.println("您还有"+i+"次机会");
}
}while(i>0);
if(i==0){
System.out.println("很遗憾,您未猜中,正确数字为:"+trueNum+"\n游戏结束");
}
System.out.println("\n 是否重新开始(Y/N)?");
char ch =(char)System.in.read();
System.in.skip(2); //跳过回车
if((ch=='y')||(ch=='Y')) {again=true;}
else {again=false;}
}while(again);
}
}
在运行cmd 下编译时可以运行第二轮,但是再第三轮以后按 n 退出时不能退出。我觉得应该是 System.in.skip(2); 没能跳过回车的问题。我把 “2”改为“4”了也没有用
麻烦各位帮我看一下,代码如下:/**
* 名称:猜数字
* 功能:输入1~100的数,错了提示大小;
* 3次后结束,并询问是否继续
*
* BUG :3次后,输入y(继续)时不能继续。
* 应该是:"System.in.skip(2);" 没有跳过回车导致
*/import java.io.*;class GuessNumBreak{
public static void main(String args[])throws IOException{
boolean again=false;loop1: do{
int trueNum = (int)(Math.random()*100);//产生随机数
System.out.println("游戏开始了!");
int i=3;
do{
System.out.println("请输入0~100之间的整数:(退出游戏请按N)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
int guessNum=0;
try{
str = br.readLine();
}catch(IOException e){
e.printStackTrace();
}
if(str.equalsIgnoreCase("N")){ //用户输入字母n
break loop1; //跳出外层循环,结束游戏
}
else {
guessNum = Integer.parseInt(str);
}
if (guessNum==trueNum) {
System.out.println("恭喜您!猜中了!");
break;
}
else {
if(guessNum>trueNum) {System.out.println("很遗憾偏大了!"+guessNum);}
else {System.out.println("很遗憾偏小了!");}
i--;
System.out.println("您还有"+i+"次机会");
}
}while(i>0);
if(i==0){
System.out.println("很遗憾,您未猜中,正确数字为:"+trueNum+"\n游戏结束");
}
System.out.println("\n 是否重新开始(Y/N)?");
char ch =(char)System.in.read();
System.in.skip(2); //跳过回车
if((ch=='y')||(ch=='Y')) {again=true;}
else {again=false;}
}while(again);
}
}
* @fileName T8.java
* @author 杨礼凯
* @date 2010/10/24
* @function 随机给出一个0~99(包括0和99)的数字,然后让你猜是什么数字。
* 你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示
* 后,最终推出答案。在游戏过程中,记录你最终猜对时所需要的次数,游戏结束后公布结果。
*
*/
import java.util.*;
public class T8 {
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int j=1;
int random=(int)(Math.random()*100);
System.out.println(random);
System.out.println("我心里有一个0到99之间的整数,你猜是什么?");
for(int i=0;i<=20;i++)
{
int num=input.nextInt();
if(num>random)
{
System.out.println("大了点,再猜!");
j++;
}
else if(num<random)
{
System.out.println("小了点,再猜!");
j++;
}
else if(num==random)
{
System.out.println("猜对了!");
if(j<=1)
{
System.out.println("你太有才了!");
break;
}
else if(j>=2&&j<=6)
{
System.out.println("这么快就猜出来了,很聪明么!");
break;
}
else if(j>7)
{
System.out.println("猜了半天才猜出来,小同志,尚需努力啊!");
break;
}
}
}
System.out.println("--------------------------");
System.out.println("到游戏结束一共猜了"+j+"次");
}}正好我刚也写了个猜数字的游戏.
感觉跟你的差不多,LZ可以参考下,希望对你有用
我把那段改成了这样,不知道对不对:System.out.println("\n 是否重新开始(Y/N)?");
Scanner scan = new Scanner(System.in);
String ch = scan.nextLine();
System.out.println("\n" + ch + "\n");
try{
if((ch.equals('y'))||(ch.equals('Y'))) {again=true;}
if((ch.equals('n'))||(ch.equals('N'))) {again=false;}
}catch(Exception e){
e.toString();
}但是,运行的结果是,不论输入什么,全部都是退出游戏,也没有错误信息
我是在 JCreator 下编译的,不能玩第2轮
在 cmd 下边可以玩第2轮,但是从第3轮开始,当问“是否继续”时输入 “n”也不能退出
if((ch=="y")||(ch=="Y")) {//双引号
again=true;}
else {again=false;}