2

わかりましたので、これは48時間ずっと私の頭を悩ませてきました:(

加算ゲームは、2 つの乱数を与え (それらを加算)、正しく答えるために必要な試行回数を追跡し、4 回までの試行回数に基づいてポイントを与えることを想定しています。は答えを示し、さらに 2 つの数字を生成します。あなたの推測が99を含む場合、いつでもゲームは終了します。を使用せずに、forまたはdo whileを含めますbreak;

いつ停止するようにするにはどうすればよいans == 99ですか?

import java.util.Scanner;
import java.lang.Math;

public class AdderGame {
    public static void main (String [] args){
        int ans = 0;
        int tries;
        int score = 0;

        Player one = new Player (0 , 0);
        while (ans != 99) {
            tries = one.getTry();
            ans = one.getAns();

            switch (tries) {
            case 1: score += 5; break;
            case 2: score +=3; break;
            case 3: score += 1; break;
            case 4: score += 0;
            System.out.print("The right answer is "); break;
            }
        }
        System.out.print("Your Score is " + score);
    }
}


import java.lang.Math;
import java.util.Scanner;

public class Player {
    int ran1, ran2;
    int tries = 1;
    int answer;
    int guess;

    public Player(int trys, int ans) {
        tries = trys;
        answer = ans;
    }

    public int getTry() m{
        Scanner input = new Scanner(System.in);
        ran1 = (int) (19 * Math.random());
        ran2 = (int) (19 * Math.random());
        answer = ran1 + ran2;

        do {
            System.out.print(ran1 + " + " + ran2 + ": ");
            guess = input.nextInt();
            if (guess == answer) {
                return (tries);
            } else {
                tries += 1;
            }
        } while (tries <= 4 && answer != guess || guess != 99);
        return (tries);
    }

    public int getAns() {
        return (answer);
    }
}
4

3 に答える 3

1

プログラムが正しくない理由はいくつかあります。

  1. 推測ではなく、「答え」を使用して停止します。「推測」が99でないことを確認する必要があります。
  2. Player では、while loopそのロジックを変更して、推測が 99 のときにも停止するようにする必要があります。現在、論理orを使用していますが、それをandに変更する必要があります。

改訂されたコード:

public class AdderGame {
    public static void main (String [] args){
        int ans = 0;
        int guess = 0;
        int tries;
        int score = 0;

        Player one = new Player (0 , 0);
        while (guess != 99) {
            tries = one.getTry();
            ans = one.getAns();
            guess = one.getGuess(); // notice I'm getting the guess
            switch (tries) {
            case 1: score += 5; break;
            case 2: score += 3; break;
            case 3: score += 1; break;
            case 4: score += 0;
            System.out.print("The right answer is "); break;
            }
        }

        System.out.print("Your Score is " + score);
    }
}

// Methods from inside of your Player class
public int getTry(){
    Scanner input = new Scanner(System.in);
    ran1 = (int) (19 * Math.random());
    ran2 = (int) (19 * Math.random());
    answer = ran1 + ran2;

    do {
        System.out.print(ran1 + " + " + ran2 + ": ");
        guess = input.nextInt();
        if (guess == answer) {
            return (tries);
        } else {
            tries += 1;
        }
    // Notice that it's now `&& guess != 99` instead of `||`
    } while (tries <= 4 && answer != guess && guess != 99);
    return (tries);
}
// new getter for getting the guess
public int getGuess(){
    return guess;
}
于 2013-05-30T16:56:17.943 に答える
0

これは、999 になったらプログラムを閉じたいだけだと仮定しています。

if (Integer.toString(guess).contains('999')) {
    System.exit(0);
}
于 2013-05-30T16:49:23.127 に答える