Java 将变量传递给方法并停止重置变量

Java 将变量传递给方法并停止重置变量,java,methods,Java,Methods,我知道如何将一个变量传递给另一个方法,甚至还学会了如何将多个变量传递给一个方法。我的问题是,我试图做出一个切换语句,当用户在语句中输入地高辛(心脏药物)的症状时,我想给他10分,将其存储在一个变量中,当用户输入另一个症状时,我想将其存储在一个新方法的变量中。我的问题是,在我将变量发送到我的方法并继续执行程序后,它不可避免地将其重置为零,从而使我的努力付诸东流 代码: 我认为这里的问题是,每次您输入内容并输入switch语句时,它都会将分数重置为0 switch(input5){

我知道如何将一个变量传递给另一个方法,甚至还学会了如何将多个变量传递给一个方法。我的问题是,我试图做出一个切换语句,当用户在语句中输入地高辛(心脏药物)的症状时,我想给他10分,将其存储在一个变量中,当用户输入另一个症状时,我想将其存储在一个新方法的变量中。我的问题是,在我将变量发送到我的方法并继续执行程序后,它不可避免地将其重置为零,从而使我的努力付诸东流

代码:


我认为这里的问题是,每次您输入内容并输入switch语句时,它都会将分数重置为0

switch(input5){
             case "Vomiting":
             score = 0;
我认为你需要在第一次输入之前将分数设置为0,而不是每次输入时都重置它。我无法完全理解您的代码,请链接整个课程。

尝试以下操作:

score = getMethod(score, 0);

在java中,原语是“按值传递”的。传递给方法的是值,而不是变量。更改方法中的值不会对用于调用方法的变量产生任何影响。

创建一个静态全局变量来维护或保持分数。这将允许您对方法进行后续调用,并且仍然可以跟踪准确的分数


因此,创建一个全局变量
publicstaticintscore=0。在方法内部,您可以将score变量初始化为零
score=0因为您将使用全局分数变量。

这个问题的问题是,它的措辞太差,以至于很难理解您实际认为发生了什么。除非我们理解这一点,否则很难正确回答。所以我只想指出一些在你的思维中似乎是错误的东西

  • 变量在Java中不会“重置”。在这种情况下,问题是您的
    getMethod
    方法不更新
    score

  • 如果一个方法返回一个值,而该值没有分配给某个对象,那么它将被丢弃。在本例中,您没有在调用它的位置分配
    getMethod
    返回的值

  • 在Java中,参数“按值”传递给方法。结果是这样的事情是行不通的:

    int test = 1;
    increment(test, 2);
    
    public void increment(int value, int by) {
        // FAIL - the local copy of "value" is incremented, but the
        // the original "test" variable is not touched.
        value = value + by;
    }
    
    请注意,这与变量的名称无关。问题是,方法中的变量与调用站点中使用的变量没有任何“连接”。该方法更新了前一个。。。而不是后者


关于您的代码,有几件事需要说明:

  • 一致地缩进代码是很重要的。有一些样式指南可以告诉您要做什么。(我们以一种在大多数样式指导原则下都可以接受的方式重新嵌入了您的代码。)

  • 对方法、变量和类等使用合理且信息丰富的名称是很重要的。这有助于读者理解代码作者希望代码做什么/意味着什么。在您的例子中,“getMethod”没有告诉读者该方法应该做什么

  • 方法还应该有javadoc注释,说明它们应该做什么,参数和结果的含义,等等


在您的第一个case/switch语句中,您将score和num设置为0对不起,我对问题的措词不当。我只是想让我的变量保存这个值。然后我想把这个值传递到我的方法中,并生成一个平均值。我的总体目标是为我的护理学校做一个关于药物的小测验。好吧,但这仍然不能解释你的具体想法。。。或者你实际谈论的变量。无论如何,我希望我的答案和其他答案中的要点应该足够了。。。如果您仔细阅读,@StephenC短语
参数“按值传递给方法”
应该是
原语类型参数“按值传递给方法”
@ShanthaKumara-No.>>全部
int test = 1;
increment(test, 2);

public void increment(int value, int by) {
    // FAIL - the local copy of "value" is incremented, but the
    // the original "test" variable is not touched.
    value = value + by;
}