Подтвердить что ты не робот

Повышение числа на Java

Вот мой код. По какой-то причине мой ИМТ рассчитывается неправильно. Когда я проверяю вывод на калькуляторе для этого: (10/((10/100)^2))) Я получаю 1000, но в моей программе я получаю 5. Я не уверен, что я делаю неправильно. Вот мой код:

import javax.swing.*;

public class BMI {
    public static void main(String args[]) {
        int height;
        int weight;
        String getweight;
        getweight = JOptionPane.showInputDialog(null, "Please enter your weight in Kilograms");
        String getheight;
        getheight = JOptionPane.showInputDialog(null, "Please enter your height in Centimeters");
        weight = Integer.parseInt(getweight);
        height = Integer.parseInt(getheight);
        double bmi;
        bmi = (weight/((height/100)^2));
        JOptionPane.showMessageDialog(null, "Your BMI is: " + bmi);
    }
}
4b9b3361

Ответ 1

^ в java не означает повышение до уровня мощности. Это означает XOR.

Вы можете использовать java Math.pow()


И вам может потребоваться использовать double вместо int - это:

double height;
double weight;

Обратите внимание, что 199/100 имеет значение 1.

Ответ 2

мы можем использовать

Math.pow(2, 4);

это среднее значение 2 до степени 4 (2 ^ 4)

answer = 16

Ответ 3

Ваш расчет, вероятно, является виновником. Попробуйте использовать:

bmi = weight / Math.pow(height / 100.0, 2.0);

Поскольку оба height и 100 являются целыми числами, вы, вероятно, получаете неправильный ответ при делении. Однако 100.0 является двойным. Я предлагаю вам сделать weight двойной. Кроме того, оператор ^ не имеет полномочий. Используйте вместо этого метод Math.pow().

Ответ 4

^ - не тот оператор, который вы хотите. Вы ищете pow функцию java.lang.Math.

Вы можете использовать Math.pow(value, power).

Пример:

Math.pow(23, 5); // 23 to the fifth power

Ответ 5

Слишком поздно для OP, но все же... Переупорядочение выражения как:

int bmi = (10000 * weight) / (height * height)

Устраняет все значения с плавающей запятой и преобразует деление на константу в умножение, которое должно выполняться быстрее. Целочисленная точность, вероятно, подходит для этого приложения, но если это не так:

double bmi = (10000.0 * weight) / (height * height)

все равно будет улучшением.

Ответ 6

int weight=10;
int height=10;
double bmi;
bmi = weight / Math.pow(height / 100.0, 2.0);
System.out.println("bmi"+(bmi));
double result = bmi * 100;
result = Math.round(result);
result = result / 100;
System.out.println("result"+result);

Ответ 7

Вы должны использовать ниже method-

Math.pow (двойной а, двойной б)

Возвращает значение первого аргумента, возведенного в степень второго аргумента.