从键盘输入一个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,这次发现居然可以了!
请问这怎么解释啊!
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,这次发现居然可以了!
请问这怎么解释啊!
if(n>=10){
System.out.println("您太笨了,请重猜!");
}
}
}
另外你改为n+=i;虽然输出结果如你所想,但原理已经不同了,此时n肯定不为10
照着你说做了一下,猜了10 次后n的值居然是9,既然是9,为什么还会打印"您太笨了,请重猜!"
而n+=i时,n的值为279。
把前面n初始化n=1
然后后面if(n>9)这样是不是对的?
10次后
n > 10
加一个大的数肯定大于等于加一个小的数
所以(n += i) >= (n += 1) > 9
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();
}
}
if(n>=10){
System.out.println("您太笨了,请重猜!");
}
上边for循环加上一个(a:) 在网吧上网,记的不太清楚了,前天还弄了一下,结速了后再返回这个 a,这样就能一直循环,只到你猜对。再弄上个记数,就能知道你几个来回才猜对了。