math.pow() не работает и, кажется, все в порядке

#java #math

#java #математика

Вопрос:

Привет, ребята, у меня есть следующий код, и я перенастраиваю исключение, в котором говорится: «double не может быть преобразован в строку»; для меня все выглядит нормально, но не знаю, не пропустил ли я что-то. Спасибо;

             double operadorD=this.nAleatoreo.nextInt(9);
            double operandoD=this.nAleatoreo.nextInt(3); 
            double potencia =Math.pow(operadorD, operandoD);
            generaRespuestas(Integer.parseInt(potencia));
            break;
 

* generaRespuesta получает значение int, поэтому я конвертирую его в int.

Комментарии:

1. Какой тип аргументации Integer.parseInt() требуется?

2. Код не «возвращает исключение» — у вас ошибка во время компиляции. Важно понимать разницу между ошибками во время компиляции и исключениями (которые генерируются во время выполнения кодом, который скомпилирован …)

Ответ №1:

parseInt принимает строку. Если вы хотите преобразовать из double в int, parseInt — это не тот способ. Один из способов (если не считать потери точности) — просто разыграть его.

 generaRespuestas((int)potencia);
 

Ответ №2:

ДА. Это потому Integer#parseInt(String) , что принимает a java.lang.String , которое не является an int . Тем не менее, вы, безусловно, можете преобразовать результат Math.pow в an int (с соответствующей потерей точности).

 int potencia = (int) Math.pow(operadorD, operandoD);
generaRespuestas(potencia);
 

Комментарии:

1. Большое спасибо, теперь я понял разницу.

Ответ №3:

Integer.parseInt() : ожидает строковый аргумент. Но Math.pow() возвращает вас double

изменить

double potencia =Math.pow(operadorD, operandoD);

Для

int potencia =(int)Math.pow(operadorD, operandoD);