gpt4 book ai didi

java - 方法返回类型被忽略

转载 作者:行者123 更新时间:2023-12-01 07:30:28 25 4
gpt4 key购买 nike

我试图让这个方法返回 x*y 的值作为长整型。但是,它返回一个 int。据我所知,在方法头中指定返回 long 是需要做什么?

我无法获得所需的结果,我错过了什么?

代码

public class Returnpower 
{

public long power(int x,int n)
{
int total = x * n;
if(x < 0 && n < 0)
{
System.out.println("X and/or N are not positive");
System.exit(0);
}
return (total);

}

public static void main(String[] args)
{
Returnpower power = new Returnpower();

System.out.println(power.power(99999999,999999999));
}
}

输出

469325057

谢谢

最佳答案

不,它返回 long 。只是您首先要以 32 位整数算术执行算术。看看你是怎么算的:

int total = x * n;

您甚至没有将结果存储为 long ,所以我不明白你如何期望它保留完整的 long值(value)。您需要total成为long - 并且你必须将其中一个操作数设为 long为了使乘法发生在 64 位中。

要强制在 64 位算术中进行乘法,您应该强制转换操作数之一:

long total = x * (long) n;

或者,只需删除 total完全变量 - 我建议在使用参数之前执行参数验证:

public long power(int x, int n) 
{
if (x < 0 && n < 0)
{
// Use exceptions to report errors, not System.exit
throw new IllegalArgumentException("x and/or n are negative");
}
return x * (long) n;
}

(此外,这显然没有以与 Math.pow 相同的方式执行幂运算,例如......)

关于java - 方法返回类型被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266965/

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