/*
需求2: 实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序。 
 
最多只能猜三次,如果还剩下最后一次机会的时候要提醒用户。 
*/
import java.util.*;    
class Demo5 
{
public static void main(String[] args) 
{
Random  random = new Random(); //创建 一个随机数对象赋给变量random
int num = random.nextInt(10); //定义一个变量num接收随机数(0~9)
Scanner scanner = new Scanner (System.in);

boolean panduan = true; //创建一个布尔型的变量,判断停止条件
int b = 3;
while (panduan && b<=0) {

    System.out.println("请输入10以内的一个数字: ");
int a = scanner.nextInt(); if (a>num)
{System.out.println("大了点 ");
 b=b-1;
if (b==1){
 System.out.println("注意,还有一次机会! ");}
}

else if (num>a){
System.out.println("小了点 ");
b=b-1;
if (b==1)
{System.out.println("注意,还有一次机会! ");
}
}


else{
System.out.println("正确了! ");
panduan= false;  //把布尔型的变量改为false 以停止程序
}

}
}
}这到底是哪里写错了啊..怎么不会运行呢??

解决方案 »

  1.   

     while (panduan && b<=0) {
    ......
    }
    这里错了,b = 3, 大于0,while循环进不去
      

  2.   

    int b = 3;
            while (scanner.hasNext()) {
               if(b<3)return;
      

  3.   

    while里面的条件一直是FALSE,怎么执行呢
      

  4.   


    public class Test {
    public static void main(String[] args) {
    int number = new Random().nextInt(10);
    Scanner scanner = new Scanner(System.in);
    boolean flag = true;
    int count = 0;
    while(count < 3){
    if(count < 2)
    System.out.println("请输入一个10以内的数字");
    else
    System.out.println("请输入一个10以内的数字,你只有一次一会了!");
    int answer = scanner.nextInt();
    if(answer > number)
    System.out.println("比答案大");
    if(answer < number)
    System.out.println("比答案小");
    if(answer == number){
    System.out.println("猜对了!");
    flag = false;
    break;
    }
    count++;
    }
    if(flag)
    System.out.println("很遗憾,没有猜中!");
    scanner.close();
    }
    }
      

  5.   

    import java.util.Random;
    import java.util.Scanner;class a
    {
        public static void main(String[] args) 
            {
                Random  random = new Random();        //创建 一个随机数对象赋给变量random
                int num = random.nextInt(10);        //定义一个变量num接收随机数(0~9)
                Scanner scanner = new Scanner (System.in);
     
     
             
            boolean panduan = true;                    //创建一个布尔型的变量,判断停止条件
            int b = 3;
            while (panduan && b>=1)    {               
                 
                    System.out.println("请输入10以内的一个数字: ");
                    int a = scanner.nextInt();
     
                    if (a>num)
                            {System.out.println("大了点 ");
                             b=b-1;
                                    if (b==1){
                                     System.out.println("注意,还有一次机会! ");}
                            }
                         
                        else if (num>a){
                            System.out.println("小了点 ");
                            b=b-1;
                            if (b==1)
                                {System.out.println("注意,还有一次机会! ");
                                }
                            }
                             
                     
                    else{
                                System.out.println("正确了! ");
                                panduan= false;                         //把布尔型的变量改为false 以停止程序
                                }
                         
            }
    }
    }
      

  6.   

    2L回复是正确的,你的循环条件一开始就是不满足根本就不会执行,所以你里面写的再复杂都没用,这里可以考虑用do while来做,因为会先执行一次再判断条件再决定是否执行。
      

  7.   

    &&条件不成立
      

  8.   

     while (panduan && b>0)改一下就可以了,次数为零就跳出循环不用取等。 
      

  9.   

    你的while循环之前定义了一个猜数字的次数变量b=3.而后循环条件是b<=0,这是永远无法执行的。
      

  10.   

    注意参数定义的位置,自己从上往下读代码。发现有什么问题,debug看看,自己的疑惑在那里。每次发现一个bug之后,要记录好,如何避免下次再犯相同的错误。这样才能成长
      

  11.   

    首先while()里面应该是b>0&&panduan
    其次,你的程序写的代码复用性太差,本来可以几行就写完,试着精简你的代码,这样看起来更清晰