2

好的,这让我整整 48 小时都在琢磨 :(

添加游戏假设给出 2 个随机数(添加它们),跟踪正确回答所需的尝试次数,并根据最多 4 次尝试的次数给出分数,在 4 次尝试时,数字重置你得到零分,它告诉你答案然后再生成 2 个数字。在任何时候,如果您的猜测包括 99,则游戏结束。不使用 afordo while包括 a 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. 在您的 Playerwhile 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 回答
0

/** 顺便说一句,如果有人真的在看不仅仅是我关于程序上下文的问题,我确实在 getTry() 的 do while 方法中犯了一个错误......它不会累加尝试并停止4 分,只要在第一个问题中输入 99,它就会给你 5 分(愚蠢的我)*/

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);
} // old version

 public int getTry(){
    int tries = 0;
    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 == 99){
           return tries;
       } else if (guess != answer && tries == 4) {
           System.out.println("Wrong 4x, correct answer is: " + answer);
       }
        else {
           tries += 1;
           System.out.println(tries);
       }
    } while (tries <= 3 && guess != answer && guess != 99);
    return (tries);
} // new and improved do while - hope it finds use to someone
于 2013-05-30T18:19:05.163 回答