2

私は 2 つの異なるクラスで牛と雄牛のゲームに取り組んでいます。最初のクラスは次のようになります。java.util.Scanner をインポートします。

public class CowsAndBulls  {

    int UserNumber=0; 
    int CompNumber=0;
    int bulls=0; 
    int cows=0;
    Scanner input = new Scanner(System.in); 

    public void getUserNumber() { 
    System.out.println("Please enter your guess!");
    int UserValue=input.nextInt();
    UserNumber=UserNumber+ UserValue;
    System.out.println("Your guess is  : " + UserNumber);
    } 



    public void getCompNumber() { 
        Random generator= new Random();
        int pickedNumber=generator.nextInt(10000) + 1000;
        CompNumber =CompNumber+ pickedNumber;
        System.out.println("The computer has guessed : " + CompNumber );
    }   
}

コンピューター用の乱数を生成し、ユーザーに推測を入力するように求めるだけです。play クラスで多くの問題が発生しています。具体的には、while ループを実行できません。

public class CowsAndBullsPlay {

    public void play() {

    int GuessCount=0; 
    int UserNumber = 0;
    int CompNumber = 0;
    int cows = 0; 
    int bullcount=0;
    int cowcount=0;
    int bulls = 0; 
    Boolean GameEnds; 
    GameEnds=false;

        while (GameEnds=false) { 
            CowsAndBulls user= new CowsAndBulls(); 
            user.getUserNumber(); 
            CowsAndBulls comp= new CowsAndBulls(); 
            comp.getCompNumber();

            String UserString=String.valueOf(UserNumber); 
            String CompString=String.valueOf(CompNumber);
            String U=UserString;
            String C=CompString;
            for (int i=0; i<4; i++)
            for (int k=i+1; k<4; k++) {
                    if(U.charAt(i)==C.charAt(k)) {
                        bullcount ++; 
                        bulls=bulls + bullcount;
                    }   



                else if(U.contains(C.charAt(i) + U)) {      
            //for (int v=0; v<4; v++)
            //for (int j=0; j<4; j++) {
                        cowcount ++; 
                        cows=cows + cowcount;
                    }
                    GuessCount++;
            }   
            if (bulls==4) { 
                GameEnds= true; 
                System.out.println("Congratulations!");
                System.out.println("it took you:" + GuessCount);
            } 
            else { 
                System.out.println("cows: " + cows); 
                System.out.println("Bulls:" + bulls);
            }   

        } 
    }
}   

牛をチェックしてから雄牛をチェックすることになっています。その後、雄牛が 4 に等しくない場合、ループを繰り返す必要があります。最初の 2 つのメソッドを呼び出して、ユーザー入力を要求し、コンピューターにランダムに数値を生成するように要求します。その後、guesscount を保持する必要がありますループの繰り返しの追跡。

コードはコンパイルされますが、while ループは実行されません。

ここに私のテスタークラスがあります:

public class CowsAndBullsTester { 

public static void  main(String[] args) {

    int bears = 0;
    int cows = 0;
    Boolean GameEnds = false;

     System.out.println("welcome to Cows Versus Bulls death match!");
     CowsAndBulls user= new CowsAndBulls (); 
     user.getUserNumber(); 

     System.out.println("Now the computer will pick a number!");
     CowsAndBulls comp= new CowsAndBulls (); 
     comp.getCompNumber(); 

     System.out.println("Let's see how you did!");
     CowsAndBullsPlay game= new CowsAndBullsPlay();
     game.play(); 
    }
}

どんな助けにも本当に感謝します。ばかげた間違いがあると確信しています。何がわからないだけです。これは私の 3 番目の割り当てにすぎず、自分で何が問題なのかを理解するのに苦労しています :)

ありがとう!

4

1 に答える 1

6

while (GameEnds=false)に変更する必要がありますwhile (GameEnds==false)

1 つ目は割り当てで、2 つ目は比較です。したがって、最初にfalseが に割り当てられGameEnds、次に条件に対してGameEndsが評価さfalseれますwhile。つまり、ループに入ることはありません。

また、以下の @AndrewMao のコメントも参照してください。一般に、条件で s が直接使用されていることがわかります。否定boolean(!


camelCaseちょっとした補足:わかりやすくするために、変数の名前を変更することをお勧めします。

于 2013-03-06T18:40:20.480 に答える