所以我试图从名为Lexicon的类中的单词列表中获取一个随机单词。
public abstract class Lexicon {
public String getWord(int index) {
switch (index) {
case 0: return "UNIVERSITY";
case 1: return "COMPUTER";
case 2: return "LAPTOP";
case 3: return "HEADPHONES";
case 4: return "FUZZY";
case 5: return "HOTEL";
case 6: return "KEYHOLE";
case 7: return "TELEPHONE";
case 8: return "PRINTER";
case 9: return "BUILDING";
default: return "Illegal index";
}
};
}
到一个名为Game的课程:
import java.util.Random;
public class Game {
private int MaxGuess;
private boolean GameOver;
private String RandomWord;
public Game(int maxGuess, boolean gameOver, Lexicon randomWord) {
super();
MaxGuess = maxGuess;
GameOver = gameOver;
Random rand = new Random();
int n = rand.nextInt(9);
RandomWord=getWord(n);
}
public void Result(boolean GameOver) {
if(GameOver) {
System.out.println("You have won the game!!");
}
else {
System.out.println("You Lost!!");
}
}
}
我收到一条错误消息,说明方法getWord(int)在游戏类型中未被识别。 它必须是非常简单的东西,但我不能让自己找到错误。尝试了一个小时。我的Java技能在整个夏天都生锈了。任何帮助将不胜感激。谢谢你。
答案 0 :(得分:0)
因为getWord()
是在班级Lexicon
中定义的,而不是在班级Game
中定义的。
答案 1 :(得分:0)
如果您希望继承函数,则需要game
扩展Lexicon
public class Game extends Lexicon {
...
}
或者使用您拥有的词典:
RandomWord=randomWord.getWord(n);
答案 2 :(得分:0)
函数getWord属于不同的类。您可以将方法复制到游戏类中,也可以尝试调用Lexicon.getWord()而不是
答案 3 :(得分:0)
嗯,你应该RandomWord = randomWord.getWord(n)
,而不仅仅是RandomWord=getWord(n)
。
在任何情况下,我都不清楚为什么你这样做。词典可以只是一个字符串列表,而不是隐藏在类中的switch语句(以及一个抽象语句!)
答案 4 :(得分:0)
需要解决两个问题,
nextInt函数永远不会得到0-9,但是0-8,请更改此行
int n = rand.nextInt(9);
到
int n = rand.nextInt(10);
getWord()未在Game Class中定义。你应该从Lexicon Class打电话。我建议你把它改成静态的。这是从
改变而来的public String getWord(int index) {
到
public static String getWord(int index) {
所以你可以用
直接调用这个函数RandomWord = Lexicon.getWord(n);
通过这种方式,您节省了性能,并且还有正确的方法来实现函数,因为静态逻辑应始终以这种方式实现。
*备注:与编译或错误无关,但对于变量命名:
private int MaxGuess;
private boolean GameOver;
private String RandomWord;
除非你总是以smallCamelToe惯例后的小写字母开头,否则一些例子如下:
//variable
private int maxGuess;
private boolean gameOver;
private String randomWord;
//constant variable
private final int MAX_GUESS = 1;
//static constant variable, usually be used when implementing constant files and import from other classes
public static final boolean GAME_OVER;
可以实现以下内容:
public Game(int maxGuess, boolean gameOver) {
super();
maxGuess = maxGuess; //you can use this.maxGuess if compile failed
gameOver = gameOver; //you can use this.gameOver if compile failed
Random rand = new Random();
RandomWord = Lexicon.getWord(rand.nextInt(9));
}