java - 构造函数中的变量?

标签 java

我目前是 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/

相关文章:

java - 为什么 CheckBoxMenuItem 不生成操作事件?

java - 如何在 PCollection 中组合数据 - Apache beam

java - 如何将 .war 文件正确部署到 OpenShift?

java - 颜色选择器崩溃 intellij

java - 由于边界原因,maven 拒绝编译泛型类,即使在转换类之后也是如此

java - 关于 Android 中 putExtra 方法顺序的奇怪行为

java - tomcat服务每次重启都要部署war文件吗

java - 如何将 Map<Path, List<Path>> 流式传输到包含绝对路径作为字符串的 List<String>?

java - 我不断收到这个 java.lang.illegalStateException

java - 我应该使用什么代码来获取复选框中选中的框数量?