使用Math.pow的Java.Lang.Exception

时间:2017-06-16 20:53:10

标签: java

我正在创建一个方法,它接受两个整数,基数和幂,作为参数并找到基数^幂。如果基数或幂是负数,那么该方法必须抛出一个例外,即" n和p应该是非负的。"

这是我的代码:

import java.lang.*;
class MyCalculator{
    public int power(int base, int power){
       if (base < 0 && power < 0){
            System.out.println("java.lang.Exception: n and p should be non-negative");
       }
            int calculator = (int) Math.pow(base, power);
            return calculator; 
    }
}

以下是我的意见:

3 5
2 4
-1 -2
-1 3

这是我的输出:

243
16
java.lang.Exception: n and p should be non-negative
1
-1

这是我的目标输出:

243
16
java.lang.Exception: n and p should be non-negative
java.lang.Exception: n and p should be non-negative

有人请告诉我如何解决这个问题以及为什么我会得到一个&#34; 1&#34;和&#34; -1&#34;在末尾?

2 个答案:

答案 0 :(得分:5)

base < 0 && power < 0

应该是:

base < 0 || power < 0

此外,你并没有真正抛出异常,你只是打印到控制台。

你应该抛出这样的异常(如果你想抛出一个):

import java.lang.*;
class MyCalculator{
    public int power(int base, int power){
       if (base < 0 || power < 0){
            throw new Exception("n and p should be non-negative");
       }
            int calculator = (int) Math.pow(base, power);
            return calculator; 
    }
}

您可能需要阅读:https://docs.oracle.com/javase/tutorial/essential/exceptions/

答案 1 :(得分:0)

首先,如果可以观察调用此方法的代码,我们可以提供更接近的原因。

其次,可能问题是你使用&#34;&amp;&amp;&#34;比较器确定两个参数都应为负数,以便打印&#34;异常&#34;同时我认为你想使用&#34; ||&#34;比较器,这意味着只有一个参数需要为负,才能进入&#34;异常&#34;