Повышение числа на 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); } }
- Можно ли вызвать метод main () classа из другого classа в java
- Несколько версий Java, работающих одновременно под Windows
- Ошибка при создании apk - «Несколько файлов dex определяют Lcom / google / ads / Ad»
- Android: как анализировать URL-адрес String с пробелами для URI-объекта?
- Разрешение на запись на SD-карту
- AES получает разные результаты в iOS (Obj-C) и Android (Java)
- Почему в Android не работает «System.out.println»?
- javax.mail.AuthenticationFailedException выбрасывается при отправке электронной почты в java
- Ошибка приложения при попытке использовать RecyclerView на Android 5.0
- Как удалить файл на Google Диске с помощью Google Диска Android API
- Android: как использовать AlarmManager
- Как изменить цвет стрелки назад в новой теме материала?
- Текст Android-центра на canvasе
^
в java не означает поднять до власти. Это означает XOR.
Вы можете использовать java’s Math.pow()
И вы можете рассмотреть возможность использования double
вместо int
– это:
double height; double weight;
Обратите внимание, что 199/100
оценивается в 1.
мы можем использовать
Math.pow(2, 4);
это среднее 2 к мощности 4 (2 ^ 4)
ответ = 16
Вероятно, ваш расчет является виновником. Попробуйте использовать:
bmi = weight / Math.pow(height / 100.0, 2.0);
Поскольку height
и 100
являются целыми числами, вы, вероятно, получаете неправильный ответ при делении. Однако 100.0
является двойной. Я предлагаю вам сделать weight
двойным. Кроме того, оператор ^
не имеет степеней. Вместо этого используйте метод Math.pow()
.
^
не является оператором, которого вы хотите. Вы ищете функцию pow
из java.lang.Math
.
Вы можете использовать Math.pow(value, power)
.
Пример:
Math.pow(23, 5); // 23 to the fifth power
Слишком поздно для OP, но все же … Перестановка выражения как:
int bmi = (10000 * weight) / (height * height)
Устраняет всю плавающую точку и преобразует деление на константу в умножение, которое должно выполняться быстрее. Целочисленная точность, вероятно, подходит для этого приложения, но если это не так:
double bmi = (10000.0 * weight) / (height * height)
все равно будет улучшением.
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);