Я пытаюсь написать программу, чтобы приравнять значение любого числа к любой степени, и я предполагаю реализовать обработку исключений для показателей степени меньше нуля, что я успешно сделал, а также обработчик исключений, когда значение слишком велико для вывода, т.е. бесконечность.
вот мой класс мощности, который содержит функцию Power :
public class power
{
// instance variables - replace the example below with your own
public static double Power(double base, int exp) throws IllegalArgumentException
{
if(exp < 0){
throw new IllegalArgumentException("Exponent cannot be less than zero");
}
else if(exp == 0){
return 1;
}
else{
return base * Power(base, exp-1);
}
}
}
Вот тестовый класс:
public class powerTest
{
public static void main(String [] args)
{
double [] base = {2.0, 3.0, 2.0, 2.0, 4.0 };
int [] exponent = {10, 9, -8, 6400, 53};
for (int i = 0; i < 5; i++) {
try {
double result = power.Power(base[i], exponent[i]);
System.out.println("result " + result);
}
catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
catch (ArithmeticException e) {
System.out.println(e.getMessage());
}
}
}
}
вот результат теста:
result 1024.0
result 19683.0
Exponent cannot be less than zero
result Infinity
result 8.112963841460668E31
мой вопрос: как я могу получить «бесконечность результата», чтобы сказать что-то еще через ArithmeticException, обрабатывающее что-то вроде «Переполнение с плавающей запятой»?
заранее спасибо.