import java.util.Random;
import java.util.Scanner;
public class GuessNumber
{
public static void main(String args[])
{

GuessNumber game=new GuessNumber();
    

}
    int [] a=new int[4];
    int [] b=new int[4];
    int []array=new int[4];
    int NumberA,NumberB;
    int fth=1;
public  GuessNumber()
{
    a=new int[4];
this.CreatNum(a);
//Test
System.out.println("\nthe result is:");
        for(int i=0;i<4;i++)
        {
            System.out.print(a[i]);
        }
   
        Scanner scan=new Scanner(System.in);
int []b=new int[4];
while(fth<=8){

int t=1000;
System.out.println("第"+fth+"次");
b[0]=scan.nextInt();
 for(int i=0;i<3;i++)
             {
                 b[i+1]=b[i]%t;
                 b[i]=b[i]/t;
                 t/=10;
             }
        //Test
     /*      for(int i=0;i<4;i++)
                {
                System.out.print(b[i]);
                }
     */
          
         if (this.getNumberA(a,b)==4)
         {
         
         System.out.println("Right!");
         return;
     }
     System.out.println("结果:"+this.getNumberA(a,b)+"A"+this.getNumberB(a,b)+"B");
     fth++;
     }
     }
boolean EachDif(int[] array)
{
 int i ,j;
        for(i = 0; i<4 ;i++){
            for(j=i+1;j<4;j++){
                if(a[i] == a[j])
                {
                    return false;
                }
            }
        }
        return true;
}
  void CreatNum(int[] a)
{
Random r=new Random();

do{
for(int i=0;i<4;i++)

a[i]=r.nextInt(10);
}while(!EachDif(a));


}
 
 int getNumberA(int[] a,int[] b)
{
NumberA=0;
for(int i=0;i<4;i++)
{
 if(a[i]==b[i])
 NumberA++;
 
 
}
return NumberA;

}
 int getNumberB(int[]a,int[] b)
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i]==b[j]&&i!=j)
NumberB++;

}
}
return NumberB;
}


}

解决方案 »

  1.   

    //猜字游戏:电脑随机生成不重复的四位数(0-9),如1359,然后游戏者猜测,如猜测1234,电脑就会给出1A1B(数字1位置数值对上,3只有数值对上)
    import java.util.Random;
    import java.util.Scanner;
    public class GuessNumber
    {
    public static void main(String args[])
    {

    GuessNumber game=new GuessNumber();
        

    }
        int [] a=new int[4];
        int [] b=new int[4];
        int []array=new int[4];
        int NumberA,NumberB;
        int fth=1;
    public  GuessNumber()
    {
        a=new int[4];
    this.CreatNum(a);
    //Test
    System.out.println("\nthe result is:");
            for(int i=0;i<4;i++)
            {
                System.out.print(a[i]);
            }
       
            Scanner scan=new Scanner(System.in);
    int []b=new int[4];
    while(fth<=8){

    int t=1000;
    System.out.println("第"+fth+"次");
    b[0]=scan.nextInt();
     for(int i=0;i<3;i++)
                 {
                     b[i+1]=b[i]%t;
                     b[i]=b[i]/t;
                     t/=10;
                 }
            //Test
         /*      for(int i=0;i<4;i++)
                    {
                    System.out.print(b[i]);
                    }
         */
              
             if (this.getNumberA(a,b)==4)
             {
             
             System.out.println("Right!");
             return;
         }
         System.out.println("结果:"+this.getNumberA(a,b)+"A"+this.getNumberB(a,b)+"B");
         fth++;
         }
         }
    //判断四位数不重复
    boolean EachDif(int[] array)
    {
     int i ,j;
            for(i = 0; i<4 ;i++){
                for(j=i+1;j<4;j++){
                    if(a[i] == a[j])
                    {
                        return false;
                    }
                }
            }
            return true;
    }

       //随即生成四位数
      void CreatNum(int[] a)
    {
    Random r=new Random();

    do{
    for(int i=0;i<4;i++)

    a[i]=r.nextInt(10);
    }while(!EachDif(a));


    }
     //A表示位置和数值都对
     int getNumberA(int[] a,int[] b)
    {
    NumberA=0;
    for(int i=0;i<4;i++)
    {
     if(a[i]==b[i])
     NumberA++;
     
     
    }
    return NumberA;

    }
    //B表示数值对但是位置没对上
     int getNumberB(int[]a,int[] b)
    {
    for(int i=0;i<4;i++)
    {
    for(int j=0;j<4;j++)
    {
    if(a[i]==b[j]&&i!=j)
    NumberB++;

    }
    }
    return NumberB;
    }


    }
      

  2.   

    在getNumberB中加一句NumberB = 0;  你这里改用成员变量比用局部变量好多了