Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初学者Java(循环)-缺少返回语句_Java_Loops_If Statement_While Loop_Return Value - Fatal编程技术网

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

初学者Java(循环)-缺少返回语句,java,loops,if-statement,while-loop,return-value,Java,Loops,If Statement,While Loop,Return Value,嗨!我尽了一切努力想弄清楚为什么返回语句没有被识别。如果我把“返回余额”放在其他任何地方,它表示无法访问system.out.println。。。你们中有谁能帮我解释一下为什么这可能不起作用??谢谢 return语句在循环内,而循环在if条件段外,因此代码在第一次迭代时中断循环 可能的解决方案:将返回移动到之外,同时 import java.util.Scanner; public class Vending { public double vend(double balance) {

嗨!我尽了一切努力想弄清楚为什么返回语句没有被识别。如果我把“返回余额”放在其他任何地方,它表示无法访问system.out.println。。。你们中有谁能帮我解释一下为什么这可能不起作用??谢谢

return语句在
循环内,而
循环在
if
条件段外,因此代码在第一次迭代时中断循环

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

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;
        }
    }
}

return
语句在
while
循环内,而在
if
条件段外,因此代码在第一次迭代时中断循环

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

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;
        }
    }
}

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

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

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

while (in.hasNext()) {
    if (command.equals("penny")) {
        balance = balance + 0.01;
        System.out.println("balance = " + balance);
    }
}
return balance;
但是,如果.hasNext()中的语句
返回
false
,会发生什么情况呢?然后将永远无法到达它内部的
返回值。因此,编译器不能保证您的方法是有效的java,因此正在抱怨

您应该在
while
之外添加return语句

当你说

如果我把“回报余额”放在其他地方,它会说 无法访问system.out.println

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

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

while (in.hasNext()) {
    if (command.equals("penny")) {
        balance = balance + 0.01;
        System.out.println("balance = " + balance);
    }
}
return balance;
但是,如果.hasNext()中的语句
返回
false
,会发生什么情况呢?然后将永远无法到达它内部的
返回值。因此,编译器不能保证您的方法是有效的java,因此正在抱怨

您应该在
while
之外添加return语句

当你说

如果我把“回报余额”放在其他地方,它会说 无法访问system.out.println

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

您将收到“Missing return statement”错误,因为您的
while
循环可能永远不会执行。这会导致程序到达函数的末尾而不返回

while (in.hasNext()) {
    if (command.equals("penny")) {
        balance = balance + 0.01;
        System.out.println("balance = " + balance);
    }
    return balance;
}
如果我们在
中假装
没有任何行,则程序在
时传递
,因此
返回
,从而导致此问题。对于您的情况,您可能只有一个默认返回值,例如
return0或您希望如何处理该情况。

您将收到“缺少返回语句”错误,因为您的
while
循环可能永远不会执行。这会导致程序到达函数的末尾而不返回

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

如果我们在
中假装
没有任何行,则程序在
时传递
,因此
返回
,从而导致此问题。对于您的情况,您可能只有一个默认返回值,例如
return0或您希望如何处理这种情况。

如果您缩进代码,您的代码将更容易理解,无论您还是我们。如果您使用的是像Eclipse这样的IDE,您可能会要求它为您重新格式化源代码。一旦你做到了这一点,答案可能会更加明显。(我想我已经知道出了什么问题,但我希望你重新格式化代码,看看你自己是否能找到。)啊,除非我看到它已经完成了:(我认为自己缩进比让OP来做要快:)似乎有一个逻辑问题。你必须在每一个循环中重新阅读新行,而不是只阅读一次并期望循环按预期工作。也就是说,我无意中删除了实际问题。。。现在修复了,很抱歉。如果您缩进代码,您的代码将更容易理解,对您和我们都是如此。如果您使用的是像Eclipse这样的IDE,您可能会要求它为您重新格式化源代码。一旦你做到了这一点,答案可能会更加明显。(我想我已经知道出了什么问题,但我希望你重新格式化代码,看看你自己是否能找到。)啊,除非我看到它已经完成了:(我认为自己缩进比让OP来做要快:)似乎有一个逻辑问题。你必须在每一个循环中重新阅读新行,而不是只阅读一次并期望循环按预期工作。也就是说,我无意中删除了实际问题。。。现在修好了,很抱歉。嗨!我已经尝试将返回移到while之外,但是当我将所有其他参数保持不变时,我得到了“Exception in thread”main“java.lang.NoSuchMethodError:main”。你知道什么是公共关系吗