我目前是 Java 编程的初学者,任务是“编写和测试 Hangman 游戏的一个版本。您的解决方案将涉及一个 Hangman 类,它的构造函数选择一个单词,并且它的 guess 方法处理每个猜到的字符。”
但是,我有一个小问题。我的整个代码都可以运行和编译,并且我已经编写了猜测方法,但是我在编译时遇到了问题。我在我的构造函数中声明了我的实例变量。我在我的代码中多处使用了 String 变量字,它不让我编译。
我的问题的核心是这个。
public class Hangman{
public Hangman () {
String word = "p u m p k i n";
String blanks = "_ _ _ _ _ _ _";
}
int k = word.length(); ... rest code after this
当我尝试编译它时,它不允许我这样做。它表示变量 word 为 null 并显示一条错误消息。为什么我不能使用 word.length() 来查找长度值?构造函数内部声明的变量不能作为实例变量使用吗?最简单的解决方法是在构造函数外部声明我的实例变量(如果我这样做,我的代码将完美运行),但提示要我选择在构造函数内声明单词。为什么我不能使用 String 单词我在构造函数中声明为“p u m p k i n”以获得k?在我的方法中使用变量 blanks 也不起作用。
那么,这有什么问题呢?如何将构造函数中声明的变量用作实例变量?或者这是不可能的?为什么我不能使用在构造函数中声明的 String word 或 String blanks? 谢谢。
最佳答案
每次您在构造函数中创建局部变量时。
public Hangman () {
String word = "p u m p k i n";
String blanks = "_ _ _ _ _ _ _";
}
您要做的是在constructor
中为成员赋值。
String word;
String blanks;
public Hangman () {
word = "p u m p k i n";
blanks = "_ _ _ _ _ _ _";
}
此外,不将它们放入构造函数参数中并在构造函数中分配它们是没有意义的。
应该是
public Hangman (String word, String blanks) {
this.word = word;
this.blanks = blanks;
}
关于java - 构造函数中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20138948/