【问题标题】:Why do we need to pass local variables through method parameters? Why can't we just declare them within the methods?为什么我们需要通过方法参数传递局部变量?为什么我们不能在方法中声明它们?
【发布时间】:2014-12-10 02:52:30
【问题描述】:
public String getAnswer(int number) {
        if(number >= 1 && number <= answers.length) {
            return answers[number-1];
        } else {
            return null;
        }
    }

为什么我们需要通过方法参数传递局部变量?为什么我们不能在方法中声明它们?请参阅上面给出的示例。我们可以看到该方法有一个用于该方法的 int 参数。为什么不能在代码中声明局部变量?

【问题讨论】:

  • 你想声明哪个局部变量?有什么价值?
  • 但这有什么意义呢?您想检查number,但该方法不知道number 是什么,直到您提供?我会像我一样问你我有什么类型的馅饼而不给你......
  • 请缩短您的标题。这似乎是一个有趣的问题
  • 方法的一个目的是将行为划分为代码重用。该方法(可能)接收一些输入并执行一些操作。方法参数只是输入的接收者。

标签: java methods parameters


【解决方案1】:

当然可以将number 声明为本地参数(不将其作为参数传递)。喜欢,

public String getAnswer() {
    int number = 2; // <-- now it's 2.
    if(number >= 1 && number <= answers.length) {
        return answers[number-1];
    } else {
        return null;
    }
}

然后调用它,

String answer = getAnswer(); // <-- can't pass an argument.

您可能还有一个field 号码,

private int number;
public String getAnswer() {
    if(number >= 1 && number <= answers.length) {
        return answers[number-1];
    } else {
        return null;
    }
}

如果您在构造函数中设置了number,那么您可以在getAnswer 中使用它,而无需传递它或使其成为方法局部变量(相反,它是类本地变量)。

【讨论】:

  • 操作员要求解释以不知道您发布的 sn-p 代码
  • @KickButtowski 我怎么不回答为什么我们不能在方法中声明它们?
  • 你的回答对我来说很模糊。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多