Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么变量;bmi“;仅获取变量的值";重量;?_Java - Fatal编程技术网

Java 为什么变量;bmi“;仅获取变量的值";重量;?

Java 为什么变量;bmi“;仅获取变量的值";重量;?,java,Java,从命令行传递javaname801.9,输出为“80”。 为什么除法和乘法被完全忽略了 在“长度*长度”周围加上括号可以解决这个问题。因为双倍bmi=重量/长度*长度=重量与双倍bmi=重量/(长度*长度)不同 在第一种情况下,您得到的结果与不使用任何括号的结果相同 /和*具有相同的优先级,因此重量/长度*长度意味着(重量/长度)*长度@Kristjan Link,这是因为运算符的优先级,当您编写重量/(长度*长度)时,会增加乘法的优先级,因为括号内运算符的优先级总是大于括号外运算符的优先级 使

从命令行传递
javaname801.9
,输出为“80”。 为什么除法和乘法被完全忽略了


在“长度*长度”周围加上括号可以解决这个问题。

因为双倍bmi=重量/长度*长度=重量
双倍bmi=重量/(长度*长度)不同

在第一种情况下,您得到的结果与不使用任何括号的结果相同


/
*
具有相同的优先级,因此
重量/长度*长度
意味着
(重量/长度)*长度

@Kristjan Link,这是因为运算符的优先级,当您编写
重量/(长度*长度)
时,会增加乘法的优先级,因为括号内运算符的优先级总是大于括号外运算符的优先级

使用括号可以修复它,因为它增加了
*
运算符的优先级。通过使用括号,可以显式地赋予
*
/
更高的优先级,这就是为什么乘法表达式将首先执行,因为它的优先级增加了。
*
/
具有相同的优先级

注意:


但是请记住,尽管与
*
具有相同的优先级,但还是先执行
/
,因为它位于第一位。正如
()
是提高优先级的一种方法,运算符的移位也是提高或降低运算符优先级的另一种方法。下面的表格显示了。在这方面将对您有所帮助。

因为/的优先级高于。因此,您的代码只需执行“除以长度”和“乘以长度”即可返回权重。()具有比/更高的优先级,因此()中的代码将首先执行,结果是权重乘以长度除以一个数字,然后再乘以相同的数字,返回初始数字。这就是数学的工作原理,因为你先除以某物,然后马上再乘以它<代码>/
*
具有同等的优先级,因此
重量/长度*长度
意味着
(重量/长度)*长度
。我把这和作业混淆了。同一行上的赋值(例如x=y+=z=1;)从右向左完成,其他二进制操作从左向右完成(例如5%2*3/6)。很抱歉
public class P2A7 {

    public static void main(String[] args) {
        String name = args[0];
        int weight = Integer.parseInt(args[1]);
        double length = Double.parseDouble(args[2]);
        double bmi = weight / length * length;
        System.out.println(bmi);
    }
}