从键盘输入一个0-1000的整数a,计算机首先自动生成一个0~999整数b,如果输入的整数大,则输出:太大了;如果输入的整数小,则输出,太小了;如果相等,则输出:恭喜你!如果猜10次后还没猜出来,则输出:你太笨了!import java.util.Scanner;
public class CaiShuZi {
public static void main(String[] args){
int a,n=0;
int b=(int)Math.random()*999;
Scanner sca=new Scanner(System.in);
System.out.print("请输入一个0-1000的整数:");
a=sca.nextInt();
if(a<=0||a>=1000){
System.out.println("数据错误!");
}for(int i=0;i<=9;i++){
if(a<b){
System.out.println("太小了,输大一点!");
n+=i;
}else if(a>b){
System.out.println("太大了,输小一点!");
n+=i;
}else{
System.out.println("恭喜您猜对了!");
return;
}
System.out.print("请输入一个0-1000的整数:");
a=sca.nextInt();
}if(n>=10){
System.out.println("您太笨了,请重猜!");
}
}
}  
以上是我写的程序,一开始,在for循环里 n+=1,但是这样发现猜10次没猜出来,程序也不输出“您太笨了,请重猜!”
想了一下,就试着把n+=1改为现在程序里面的n+=i,这次发现居然可以了!
请问这怎么解释啊!

解决方案 »

  1.   

    不会吧,n+=1肯定正确的,你再试一下。你可以加上一条语句System.out.println(n);//输出一下n
    if(n>=10){ 
    System.out.println("您太笨了,请重猜!"); 


    }  
    另外你改为n+=i;虽然输出结果如你所想,但原理已经不同了,此时n肯定不为10
      

  2.   

    我就是想知道,到底哪里出错了,为什么n+=i 输出了正确结果;
    照着你说做了一下,猜了10 次后n的值居然是9,既然是9,为什么还会打印"您太笨了,请重猜!" 
    而n+=i时,n的值为279。
      

  3.   

    我修改了一下:
    把前面n初始化n=1
    然后后面if(n>9)这样是不是对的?
      

  4.   

    i > 1
    10次后
    n > 10
      

  5.   

    因为i >= 1
    加一个大的数肯定大于等于加一个小的数
    所以(n += i) >= (n += 1) > 9
      

  6.   

    你写的那还不是很成功!你不是写的机会完了,请重猜吗?你那样写就不能循环了。帮你该了一下!看看,这样估计就行了,不过猜不出来就一直循环下去 呵呵!import java.util.*;
    public class 猜数 { /**
     * @param args
     */
    public static void func(){
    int a;
    int n=0;
    Random ra = new Random();
    int b = ra.nextInt(100);
    Scanner sc=new Scanner(System.in);
    System.out.println("猜猜看电脑随即生成了几,你只有十次机会!");
    System.out.print("请输入一个0-100的整数:\n");
    //对自己没信心就打印我注释了的哪个“b”,注意:猜不对就是死循环哦!呵呵! //System.out.println(b);
    a=sc.nextInt();
    if(a <=0||a>=100){
    System.out.println("输入数据错误!请重输!\n");
    }
    for(int i=0;i <=9;i++){
    if(a <b){
    System.out.println("太小了,输大一点!\n");
    n = i + 1;
    }else if(a>b){
    System.out.println("太大了,输小一点!\n");
    n = i + 1;
    }else{
    System.out.println("恭喜您猜对了!");
    return;
    }
    System.out.print("请输入一个0-100的整数:");
    a=sc.nextInt();
    } if(n>=10){
    System.out.println("太笨了,请重猜!\n");
    func();
    }
    } public static void main(String[] args) {
    func();
    }
    }
      

  7.   

    最后那个
    if(n>=10){ 
    System.out.println("您太笨了,请重猜!"); 

    上边for循环加上一个(a:) 在网吧上网,记的不太清楚了,前天还弄了一下,结速了后再返回这个 a,这样就能一直循环,只到你猜对。再弄上个记数,就能知道你几个来回才猜对了。