在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); 

因为height100是整数,所以在分割的时候你可能会得到错误的答案。 但是, 100.0是双倍的。 我build议你让weight一倍。 另外, ^运算符不是为了权力。 使用Math.pow()方法。

我们可以用

 Math.pow(2, 4); 

这意味着2的权力4(2 ^ 4)

答案= 16

^不是你想要的操作员。 您正在寻找java.lang.Mathpow函数。

您可以使用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) 

仍然是一个改进。