gpt4 book ai didi

java - java 方法内部无法返回值

转载 作者:行者123 更新时间:2023-12-01 23:56:08 25 4
gpt4 key购买 nike

也许我的问题很愚蠢,但我无法解决。

这是我的代码:

public Velocity add(final Velocity velocity)
{
Velocity vel;
if(velocity.getClass().equals(CartesianCoordinate(x, y)))
{
double sumX = x + velocity.x;
double sumY = y + velocity.y;
Velocity v = new Velocity(CartesianCoordinate(x,y));
v.x = sumX;
v.y = sumY;
vel = v;
}

if(velocity.getClass().equals(p))
{
do something...
}
return vel;
}

谁能告诉我为什么我不能返回“vel”,我不想创建一个类变量...

最佳答案

Can any one tell me why i cant return "vel"

当然 - 如果您的两个条件都不成立,那么您还没有给它一个值。该变量没有明确分配,因此您无法读取它的值来返回它。在这种情况下,您想要返回什么?它甚至有效吗?也许在这种情况下你应该抛出异常。

就我个人而言,我实际上会从每个 if 返回 block - 我认为局部变量没有增加任何好处。到那时,问题就更明显了:

public Velocity add(final Velocity velocity) {
if (...) {
...
return ...;
}
if (...) {
...
return ...;
}
// What should we do if we get here?
}

现在,确定返回值的两个条件都立即返回它,更明显的是(IMO),如果您深入了解,那是因为这两个条件都没有评估为true ...所以要么你想返回一些“空”值,或者一个空引用,要么抛出一个异常。

当然,这是假设您不希望第二个条件有效地胜过第一个条件,目前确实如此 - 如果两个条件都为真,则第一个 block 中设置的值可能是无关的,因为它'将被第二个 block 覆盖。

也不清楚 CartesianCoordinate 是什么确实如此,但它的命名很奇怪 - 如果它返回一个 Class<?> 的 Java 方法这绝对很奇怪。什么是p这里?我不知道你的真实代码是否与此有所不同,但即使除了无法编译的原因之外,它对我来说也有点可疑。

关于java - java 方法内部无法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15591521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com