我正在尝试完成我的一门类(class)的项目,我快完成了,但遇到了问题。为此,我能够得到一些东西,但我不太确定应该如何将其分解为所需的类。
最终的项目应该有一个 GuessApp 类,该类使用处理游戏逻辑的 GuessLogic(我正确的)来运行简单的猜谜游戏。换句话说,GuessApp 类不会跟踪正确答案、猜测次数、先前猜测的数字或猜测是否合法。另一方面,GuessApp 类负责所有 I/O。换句话说,GuessLogic 类不会打印任何内容(可能出于调试目的除外)。
所以我的问题本质上是如何将代码分解为这两个类,我们还应该在 GuessLogic 类中实现一个 toString 方法,该方法返回 GuessLogic 对象的状态(即它的所有成员变量) ) 作为单个字符串。我该怎么做?
到目前为止我的代码:
package guessapp;
import java.util.HashSet;
import java.util.Scanner;
public class GuessApp {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
HashSet<Integer> hs = new HashSet<>();
int GuessLogic = (int) (Math.random() * 10 + 1);
int guess;
int NumGuess = 1;
do {
System.out.print("Enter a guess: ");
guess = keyboard.nextInt();
if (hs.contains(guess)) {
System.out.println("You have already entered this number");
continue; // this will repeat the loop
}
if (guess < 0 || guess > 10) {
System.out.println("Your guess is out of the specified range. Please try again.");
continue; // this will repeat the loop
}
System.out.println("Your guess is " + guess);
if (guess == GuessLogic) {
System.out.println("You got it right!! Congrats!! Total Number of Guesses: " + NumGuess);
return; // this will stop the loop
}
else if (guess < GuessLogic) {
System.out.println("You are wrong!!! Hint: Guess Higher, Guess number: " + NumGuess);
NumGuess++;
}
else if (guess > GuessLogic) {
System.out.println("You are wrong!!! Hint: Guess Lower, Guess number: " + NumGuess);
NumGuess++;
}
hs.add(guess);
} while (true);
}
}
最佳答案
好吧,按步骤进行。
创建 GuessLogic 类,并将所有数据字段移至其中。
public class GuessLogic { HashSet<Integer> hs = new HashSet<>(); int GuessLogic = (int) (Math.random() * 10 + 1); int guess; int NumGuess = 1; ...
提供添加猜测的方法
public void guess(int guess){ this.guess=guess; this.NumGuess++; validate(); }
实现验证方法。在这里你有很多选择。您可以保留当前状态的枚举,例如
enum State { START, DUPLICATE, OUT_OF_RANGE, LOWER, HIGHER, MATCH }
验证将设置状态。
然后您的应用程序查询状态并打印实际消息。
或者,这会更简单,您的逻辑应该计算消息并只维护一个 boolean 值 shouldStop,应用程序将查询以了解是否应该再次提示或退出
使用 toString() 方法,您可以连接所有字段值(Java API 中的大多数对象都有一个有意义的 toString()。提示:一个好的 IDE 可以从字段自动生成 toString()。
希望这对您有所帮助,并且不要害怕尝试!!
关于java - 闯入 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798598/