我试图为我的一门课程完成一个项目而且我差不多完成了,但遇到了问题。为此,我能够得到一些工作,但我不确定如何将其分解为所需的类。
最终项目应该有一个GuessApp类,它使用GuessLogic(我有正确的)处理游戏逻辑的简单猜谜游戏。换句话说,GuessApp类不会跟踪正确的答案,猜测的数量,之前猜到的数字,或猜测是否合法。另一方面,GuessApp类负责所有I / O.换句话说,GuessLogic类不打印任何东西(除了可能用于调试)。
所以我的问题基本上是如何将我的代码分解为这两个类,我们还应该在GuessLogic类中实现一个返回GuessLogic对象状态的toString方法(即它的所有成员变量) )作为单个字符串。我该怎么做?
到目前为止我的代码:
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);
}
}
答案 0 :(得分:2)
好吧,按步骤做。
创建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
}
验证会设置状态。
然后您的应用程序查询状态并打印实际消息。
或者,哪个更简单,你的逻辑应该计算消息并只维护一个布尔应该停止,应用程序将查询它是否应该再次提示或退出
toString()方法,你可以只连接所有的字段值(Java API中的大多数对象都有一个meaingful toString()。提示:一个好的IDE可以从字段中自动生成toString()。
希望这有帮助,不要害怕尝试!!