分成Java类
我正试图完成我的一门课程的一个项目,我几乎完成了,但遇到了一些问题。为此,我能够让一些东西工作,但我真的不知道我应该如何去打破它到所需的类 最后一个项目应该有一个GuessApp类,它使用处理游戏逻辑的GuessLogic(我的答案是正确的)运行简单的猜测游戏。换句话说,GuessApp类不跟踪正确答案、猜测次数、先前猜测的数字,或者猜测是否合法。另一方面,GuessApp类负责所有I/O。换句话说,GuessLogic类不打印任何内容(可能出于调试目的除外) 因此,我的问题本质上是如何将代码分解为这两个类,我们还应该在GuessLogic类中实现一个toString方法,该方法将GuessLogic对象(即其所有成员变量)的状态作为单个字符串返回。我该怎么做 到目前为止,我的代码是:分成Java类,java,class,hashset,Java,Class,Hashset,我正试图完成我的一门课程的一个项目,我几乎完成了,但遇到了一些问题。为此,我能够让一些东西工作,但我真的不知道我应该如何去打破它到所需的类 最后一个项目应该有一个GuessApp类,它使用处理游戏逻辑的GuessLogic(我的答案是正确的)运行简单的猜测游戏。换句话说,GuessApp类不跟踪正确答案、猜测次数、先前猜测的数字,或者猜测是否合法。另一方面,GuessApp类负责所有I/O。换句话说,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.添加(猜测);
}虽然(正确);
}
}
好吧,一步一步地做
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
}
希望这能有所帮助,不要害怕尝试!!我认为你想研究的一般方法是将实际内容与用户界面内容隔离开来。这样看-你可以打印到
系统中。out
或者你可以将其封装在Swing应用程序或web应用程序中…这些应用程序中的猜测逻辑都不会改变例如,做一个猜测逻辑,它有一个makeGuess(int)
方法,你的UI代码会调用这个方法。诸如此类的东西。有意义吗?Idk我仍然很困惑,我能够理解toString()方法。我仍然对如何让GuessLogic类工作感到困惑。我创建了该类并复制了字段,但它不工作。我的逻辑是可靠的,但我真的很困惑,当在不同的类中运行测试时,如何使用main输出结果。
enum State {
START,
DUPLICATE,
OUT_OF_RANGE,
LOWER,
HIGHER,
MATCH
}