当前位置: 首页 > 知识库问答 >
问题:

初学者Java(循环)-缺少返回语句

杨昆
2023-03-14
import java.util.Scanner;

public class Vending {
    public double vend(double balance) {
        Scanner in = new Scanner(System.in);
        balance = 0;
        System.out.print("Enter a command = ");
        String command = in.nextLine();

        while (in.hasNext()) {
            if (command.equals("penny")) {
                balance = balance + 0.01;
                System.out.println("balance = " + balance);
            }
            return balance;
        }
    }
}

你好我已经想尽一切办法弄清楚为什么返回语句没有被识别。如果我把“回报余额”放在其他地方,它会说系统。出来无法访问println。。。你们谁能帮我解释一下为什么这可能不起作用??非常感谢。

共有3个答案

王高邈
2023-03-14

这是因为编译器不能保证return语句会执行,因为它在循环中。它必须假设在。hasNext()可能返回false,并且永远不会命中该返回。

车诚
2023-03-14

将方法vend(双余额)定义为返回一个。无论方法中发生了什么,它都必须返回一个两倍。现在您在这里有一个返回语句:

while (in.hasNext()) {
    if (command.equals("penny")) {
        balance = balance + 0.01;
        System.out.println("balance = " + balance);
    }
    return balance;
}

但是如果你的语句出现了,会发生什么呢。hasNext()返回false?然后它里面的返回将永远无法到达。因此,编译器不能保证您的方法是有效的java,因此正在抱怨。

您应该在之外添加一个返回语句。

当你说

如果我把“回报余额”放在其他地方,它会说系统。出来无法访问println

您将返回语句放在System.out.println()语句之前。当方法返回时,它放弃了在back语句之后可能发生的任何事情,基本上使它之后的任何事情都毫无用处。返回语句必须是方法的某个执行分支中的最后一个语句。

陶博涉
2023-03-14

返回语句位于循环内部和if条件段之外,因此代码在第一次迭代时中断循环。

可能的解决方案:将返回移到之外,而

while (in.hasNext()) {
    if (command.equals("penny")) {
        balance = balance + 0.01;
        System.out.println("balance = " + balance);
    }
}
return balance;
 类似资料:
  • 我有一个二维布尔数组“poorSignal”,需要编写一个返回网格的方法,如果数组上的一个点为真,则显示X,如果为假,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“missing return statement”。我也不确定“return”\n在打印阵列时是否可以添加新行。 这是一个赋值问题,所以我不能直接打印它,也不能只打印布尔值——它必须是一个生成网格的方法。

  • 我可以找到类似的问题,但我找不到我对这个特定案例期望的答案。 当我执行这段代码时,我得到一个编译错误,上面写着“缺少返回语句”。但是,据我所知,很明显,for循环中的代码将毫无疑问地执行,因为第一次,x=0。因此,对于这种特殊情况,没有理由不在for循环中执行代码。那么,为什么我们还需要在for循环之外声明一个额外的return语句呢?。

  • 每次我输入东西时,这段代码都会循环。如何修复它? 这是整个事情的截图:

  • 问题内容: 为什么这给了我一个丢失的退货陈述错误?每个if / else都有返回值,最后一个括号出现错误 问题答案: 每个语句都在一个语句内。虽然从逻辑上讲这是不可能的,但是当所有评估都不为真时,编译器需要返回。 我建议: 我认为,此解决方案可解决编译器问题并稍微提高可读性。 或者,有以下解决方案: 引发异常将使你可以退出方法而无需返回任何信息……因为可以说,如果到达最后一个,显然会出错。

  • 这里是Uni learning Python编程入门课程的初学者。直到我明白了大部分,现在我很困惑。 有人能解释为什么这会产生它输出的模式吗? 外循环触发器和() 然后内部循环触发器和() 然后它不会打印(6),因为

  • 这里的主要错误是do-while循环不会退出。该计划的前提是从一个行星跳到另一个行星,而planetName是目的地,current是您当前所在的行星。我想要的是当电流为“Io”时退出循环。每次“跳转”到另一个行星后,目的地即成为当前行星。我已经测试过了,当电流在 然而,循环仍在继续。