import java.util.*;class GuessNumber
{
private static int count=0;//记录猜数字的次数
private int number;//记录随机产生的数字
private int n;//记录用户输入的数字

public GuessNumber()
{
number=(int)(100*Math.random());//产生随机数
}
public void think()
{
System.out.println(number);
System.out.println("input your guess number:"+(++count));
try
{
n=System.in.read();
}catch(Exception e)
{
e.printStackTrace();
}
this.Judge();
}
public void Judge()
{
if(n!=number)
{
if(n<number)
{
System.out.println("your guess number is small  ");
System.out.println("input your guess number:"+(++count));
try
{
n=System.in.read();
}catch(Exception e)
{
e.printStackTrace();
}
}
else 
{
System.out.println("your guess number is big   ");
System.out.println("input your guess number:"+(++count));
try
{
n=System.in.read();
}catch(Exception e)
{
e.printStackTrace();
}
}
this.Judge();
}
else
{
System.out.println(" your guess number is right!"+(++count)+"    number="+number);
}
}

}class GuessPerson
{
public static void main(String[] args)
{
GuessNumber gn=new GuessNumber();
gn.think();
}
}
为什么总是 重复输出很多 而且判断不准确?

解决方案 »

  1.   

    改成这样吧:
    import java.io.IOException;public class GuessNumber{
    private static int count=0;// 记录猜数字的次数
    private int number;// 记录随机产生的数字 public GuessNumber(){
    number=(int)(100 * Math.random());// 产生随机数
    } public void think() throws IOException{
    System.out.println(number);
    while(!Judge());
    } public boolean Judge() throws IOException{
    int n=0;
    int c=0;
    System.out.println("input your guess number:" + (++count));
    StringBuilder sb=new StringBuilder();
    while((c=System.in.read()) != '\n'){
    sb.append((char)c);
    }
    try{
    n=Integer.parseInt(sb.toString().trim());
    }
    catch(Exception ex){
    System.out.println(sb+" is not number");
    return false;
    }
    if(n<number){
    System.out.println("your guess number is small ");
    return false;
    }
    else if(n>number){
    System.out.println("your guess number is big ");
    return false;
    }
    else{
    System.out.println(" your guess number is right!" + count + " number=" + number);
    return true;
    }
    } public static void main(String[] args) throws IOException{
    GuessNumber gn=new GuessNumber();
    gn.think();
    }
    }
      

  2.   

    把输入方法换一下 n=Integer.parseInt(sb.toString().trim());
    换成试试java.util.Scanner input = new java.util.Scanner(System.in);
    n=input.nextInt();
      

  3.   

    错了,复制成楼上的了
    把这个
    n=System.in.read();换成java.util.Scanner input = new java.util.Scanner(System.in);
            n=input.nextInt();
      

  4.   

    实验了好几遍,原来是忘记 System.in.read();有缺陷,我输入一个数字 然后回车 ,它竟然将回车,换行都输入进去了,我说怎么老是输出重复的东西 而且判断不对