日期:2014-05-20  浏览次数:20638 次

菜鸟求助java问题,
/* 题目:
1*.编写程序,实现如下功能:
随机分配一个1~100之间的整数(Math.random()返回一个double类的数);
用户从键盘上输入自己的猜测
程序返回提示信息,提示信息分别是“猜大了”、“猜小了”和“猜对了”。
用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
*/



import java.util.*;

public class RandomTest{
public static void main(String[] args)throws Exception{
byte[] b=new byte[1024];
System.out.println("-请输入0到100的一个数:-");
System.in.read(b);
String str=new String(b).trim();
double num=Double.parseDouble(str);
double ran=(Math.random()*100)+1;
while(num>ran){
System.out.println("大了,请重新输入:");
Scanner in=new Scanner(System.in);
num=in.nextDouble();
if(num==ran){
System.out.println("答对了");
break;
}
}
while(num<ran){
System.out.println("小了,请重新输入:");
Scanner in=new Scanner(System.in);
num=in.nextDouble();
if(num==ran){
System.out.println("答对了");
break;
}
}
System.out.println("对了!");
}
}

想不通怎么会出错,就是本来签名在CMD中还可以,突然敲大了,居然答对了。。。每次都这样。。
java 菜鸟 求助 循环 java求助

------解决方案--------------------
代码写的有问题,小了之后就不会再大了,走下去就直接对了,请看代码

while(num<ran){
    System.out.println("小了,请重新输入:");
    Scanner in=new Scanner(System.in);
    num= in.nextDouble();
    if(num==ran){     // 如果此时num > ran,则跳出循环,顺势向下走到"对了"了
        System.out.println("答对了");
        break;
    }
}
System.out.println("对了!");

------解决方案--------------------
public static void main(String[] args) throws Exception {
System.out.println("-请输入0到100的一个数:-");
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int ran = (int) (Math.random() * 100) + 1;
while (true) {
if(num > ran) {
System.out.println("大了,请重新输入:");
num = in.nextInt();
} else if(num < ran) {
System.out.println("小了,请重新输入:");
num = in.nextInt();
} else {
System.out.println("答对了");
break;
}
}