【问题标题】:Why is the last return statement not working?为什么最后一个 return 语句不起作用?
【发布时间】:2016-04-30 16:12:56
【问题描述】:

我是一个 java 初学者,我看不出我在哪里犯了错误。

此代码应该返回一个单词所包含的字母数。

内部方法编号。 1: 我使用一个变量,将字母数保存为“int numberOfChar”。

内部方法编号。 2: 我只是想返回我已经保存在方法 1 中的值,但是当我使用这个方法时,我得到的只是'0'。这是为什么?我忘记了什么?

class Wordlength {

    int numberOfChar;

    /**
     * @param word the word, which length I want to count.
     */
    public int wordlength (String word) {

        int numberOfChar = wort.length();

        return numberOfChar;
    }

    public int giveWordLength() {
        return numberOfChar;
    }
}

【问题讨论】:

  • 首先,到处都是拼写错误,这段代码无法编译...请阅读How to Ask,制作minimal reproducible example并发布正确的代码。
  • 查找“可变阴影”
  • 构造函数public int Wordlength (String word)不应该有返回
  • @Blip 这是一个方法,不是构造函数

标签: java return bluej


【解决方案1】:

也许您忘记了这会创建一个新的局部变量,而不是引用另一个?

int numberOfChar = word.length();

您可以从行首删除int,它会起作用,但是在您学习的过程中,我建议您限定正在使用的变量。

this.numberOfChar = word.length();

您需要修复一些其他语法错误,如果这应该是构造函数,则将其设为一个而不是方法。 (构造函数不返回)

public Wordlength (String word) {
    this.numberOfChar = word.length();
}

【讨论】:

  • 非常感谢!我确实忘记了,最初的“int”创建了一个新的局部变量。另外,我不小心让第一个方法看起来像一个构造函数,我不知道如何更正,因为我没有找到编辑按钮。我现在纠正了它。 //编辑:我写的代码显然没有多大意义。我所做的只是玩弄试图理解它是如何工作的语法等。也许堆栈溢出对于我的菜鸟问题来说是一个错误的地址。
  • 好吧,你还是把它编辑成一个方法而不是一个构造函数
  • 而且 StackOverflow 还可以,但如果您发布无法运行的代码则不行。
  • 是的,这就是我想要的。这段代码确实可以运行,但我使用的是 blueJ 而不是 eclipse。我想这会有所不同。
  • 从现在开始,我会先用 eclipse 测试我的代码,然后再将其发布到这里。
猜你喜欢
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多