有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在一个变量的右边可以做多少算术运算

for(int i = 1; i <= 5; i++) {
    for(int j = 1; j <= i; j++) {
        int a = i + j*2;
        System.out.print(a);
    }
}

当运行上面的代码时,我得到的输出是

3
46
579
681012
79111315

我无法理解为什么它会按照逻辑将第一行打印为3,I+j*2=4


共 (2) 个答案

  1. # 1 楼答案

    I am not able to understand why it is printing first row as 3, i+j*2 =4 as per the logic.

    优先权。乘法优先于加法,所以在第一次调用中,i+j*21+1*21+(1*2)1+23

    基本操作的优先级可以通过PEMDAS或BODMAS记住(“MD”和“AS”具有相同的优先级,因此我在这里的一行中显示了它们):

    P          Parentheses / Brackets            B
    E          Exponenentiation / Orders1        O
    MD         Multiplication & Division         DM
    AS         Addition and Subtraction          AS
    

    1幂(2^5)、平方根等

    Java站点有a page on operator precedence,它有以下表格:

    postfix                expr++ expr 
    unary                  ++expr  expr +expr -expr ~ !
    multiplicative         * / %
    additive               + -
    shift                  << >> >>>
    relational             < > <= >= instanceof
    equality               == !=
    bitwise AND            &
    bitwise exclusive OR   ^
    bitwise inclusive OR   |
    logical AND            &&
    logical OR             ||
    ternary1               ? :
    assignment             = += -= *= /= %= &= ^= |= <<= >>= >>>=
    

    1他们指的是conditional operator,这是一个三元运算符(一个接受三个操作数的运算符),实际上,Java只有一个

  2. # 2 楼答案

    乘法(*)在算术上优先于加法(+)。在第一次迭代中,ij都是1。首先要计算的是j*2,即1*2=2。然后我们将i和之前计算的乘积相加,得到1+2=3