打入Java类

时间:2016-03-04 14:33:06

标签: java class hashset

我试图为我的一门课程完成一个项目而且我差不多完成了,但遇到了问题。为此,我能够得到一些工作,但我不确定如何将其分解为所需的类。

最终项目应该有一个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);

}
}

1 个答案:

答案 0 :(得分:2)

好吧,按步骤做。

  1. 创建GuessLogic类,并将其移至所有数据字段。

    public class GuessLogic {
      HashSet<Integer> hs = new HashSet<>();
      int GuessLogic = (int) (Math.random() * 10 + 1);
    
      int guess;
      int NumGuess = 1;
      ...
    
  2. 提供添加猜测的方法

     public void guess(int guess){
        this.guess=guess;
        this.NumGuess++;
        validate();
     }
    
  3. 实施验证方法。在这里你有很多选择。您可以使用当前状态保持枚举,例如

    enum State {
      START,
      DUPLICATE,
      OUT_OF_RANGE,
      LOWER,
      HIGHER,
      MATCH
    }
    
  4. 验证会设置状态。

    1. 然后您的应用程序查询状态并打印实际消息。

    2. 或者,哪个更简单,你的逻辑应该计算消息并只维护一个布尔应该停止,应用程序将查询它是否应该再次提示或退出

    3. toString()方法,你可以只连接所有的字段值(Java API中的大多数对象都有一个meaingful toString()。提示:一个好的IDE可以从字段中自动生成toString()。

    4. 希望这有帮助,不要害怕尝试!!