在Java中提高数量
这是我的代码。 由于某种原因,我的BMI计算不正确。 当我在计算器上检查输出时是这样的: (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); } }
在Java中^
并不意味着提高到一个权力。 这意味着XOR。
你可以使用java的Math.pow()
你可能要考虑使用double
而不是int
即:
double height; double weight;
请注意, 199/100
评估为1。
你的计算可能是罪魁祸首。 尝试使用:
bmi = weight / Math.pow(height / 100.0, 2.0);
因为height
和100
是整数,所以在分割的时候你可能会得到错误的答案。 但是, 100.0
是双倍的。 我build议你让weight
一倍。 另外, ^
运算符不是为了权力。 使用Math.pow()
方法。
我们可以用
Math.pow(2, 4);
这意味着2的权力4(2 ^ 4)
答案= 16
^
不是你想要的操作员。 您正在寻找java.lang.Math
的pow
函数。
您可以使用Math.pow(value, power)
。
例:
Math.pow(23, 5); // 23 to the fifth power
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);
当然,OP太晚了,但仍然…重新排列expression式为:
int bmi = (10000 * weight) / (height * height)
消除所有的浮点数,并将一个常量转换为一个乘法运算,该运算应该更快。 整数精度对于这个应用程序可能是足够的,但如果不是这样的话:
double bmi = (10000.0 * weight) / (height * height)
仍然是一个改进。