Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分成Java类_Java_Class_Hashset - Fatal编程技术网

分成Java类

分成Java类,java,class,hashset,Java,Class,Hashset,我正试图完成我的一门课程的一个项目,我几乎完成了,但遇到了一些问题。为此,我能够让一些东西工作,但我真的不知道我应该如何去打破它到所需的类 最后一个项目应该有一个GuessApp类,它使用处理游戏逻辑的GuessLogic(我的答案是正确的)运行简单的猜测游戏。换句话说,GuessApp类不跟踪正确答案、猜测次数、先前猜测的数字,或者猜测是否合法。另一方面,GuessApp类负责所有I/O。换句话说,GuessLogic类不打印任何内容(可能出于调试目的除外) 因此,我的问题本质上是如何将代码分

我正试图完成我的一门课程的一个项目,我几乎完成了,但遇到了一些问题。为此,我能够让一些东西工作,但我真的不知道我应该如何去打破它到所需的类

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

}
}
包猜app;
导入java.util.HashSet;
导入java.util.Scanner;
公共类猜测应用程序{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
HashSet hs=新的HashSet();
int猜测逻辑=(int)(Math.random()*10+1);
智力猜测;
int NumGuess=1;
做{
System.out.print(“输入猜测:”);
guess=keyboard.nextInt();
如果(hs.包含(猜测)){
System.out.println(“您已经输入了这个号码”);
continue;//这将重复循环
}
如果(猜测<0 | |猜测>10){
System.out.println(“您的猜测超出了指定的范围。请重试。”);
continue;//这将重复循环
}
System.out.println(“您的猜测是”+猜测);
if(猜测==猜测逻辑){
System.out.println(“你猜对了!!恭喜!!总猜测次数:”+NumGuess);
return;//这将停止循环
}
else if(猜测<猜测逻辑){
System.out.println(“你错了!!!提示:猜高一点,猜数字:”+NumGuess);
NumGuess++;
}
else if(猜测>猜测逻辑){
System.out.println(“你错了!!!提示:猜低一点,猜数字:”+NumGuess);
NumGuess++;
}
hs.添加(猜测);
}虽然(正确);
}
}
好吧,一步一步地做

  • 创建GuessLogic类,并将所有数据字段移到该类

    public class GuessLogic {
      HashSet<Integer> hs = new HashSet<>();
      int GuessLogic = (int) (Math.random() * 10 + 1);
    
      int guess;
      int NumGuess = 1;
      ...
    
  • 实现验证方法。这里你有很多选择。可以使用当前状态保留枚举,例如

    enum State {
      START,
      DUPLICATE,
      OUT_OF_RANGE,
      LOWER,
      HIGHER,
      MATCH
    }
    
  • 验证将设置状态

  • 然后应用程序查询状态并打印实际消息

  • 或者,更简单的是,您的逻辑应该计算消息并只维护一个布尔值shouldStop,应用程序将查询它是否应该再次提示或退出

  • 在toString()方法中,您可以连接所有字段值(Java API中的大多数对象都有一个微不足道的toString()。提示:一个好的IDE可以从字段自动生成toString()


  • 希望这能有所帮助,不要害怕尝试!!

    我认为你想研究的一般方法是将实际内容与用户界面内容隔离开来。这样看-你可以打印到
    系统中。out
    或者你可以将其封装在Swing应用程序或web应用程序中…这些应用程序中的猜测逻辑都不会改变例如,做一个猜测逻辑,它有一个
    makeGuess(int)
    方法,你的UI代码会调用这个方法。诸如此类的东西。有意义吗?Idk我仍然很困惑,我能够理解toString()方法。我仍然对如何让GuessLogic类工作感到困惑。我创建了该类并复制了字段,但它不工作。我的逻辑是可靠的,但我真的很困惑,当在不同的类中运行测试时,如何使用main输出结果。
    enum State {
      START,
      DUPLICATE,
      OUT_OF_RANGE,
      LOWER,
      HIGHER,
      MATCH
    }