方法返回类型忽略

时间:2013-08-16 06:17:37

标签: java

我正在尝试使用此方法,我将x * y的值作为long返回。但是,它返回一个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

由于

2 个答案:

答案 0 :(得分:6)

不,它正在返回long。只是你首先在32位整数运算中执行算术。看看你是如何做算术的:

int total = x * n;

你甚至没有将结果存储为<{1}},所以我看不出你如何期望它保留一个完整的long值。您需要long成为total - ,您必须将其中一个操作数设为long,以使乘法发生在64-位。

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

long

或者,只需完全摆脱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; } 相同的方式执行电源操作,例如......)

答案 1 :(得分:1)

int更改为long

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

Out put

99999998900000001