2016-08-01 27 views
-3
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。

+1

這是一個調試器的用途。它可以讓你逐步瀏覽你的程序,看看每一行的功能。 –

+3

我不認爲你會得到那個輸出。沒有什麼可以打印新的行。 –

+4

爲什麼你認爲'1 + 1 * 2'是4?我相信這是3. –

回答

5

我不能理解爲什麼它打印第一行爲3,i + j * 2 = 4按照邏輯。

優先順序。乘法優先於加法,因此在第一次調用時,i+j*21+1*2,它是1+(1*2),它是1+2,它是3

基本操作的優先級可以用PEMDAS或BODMAS記住(以下簡稱「MD」和「AS」具有相同的優先級,所以我展示他們一行在這裏):

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

冪(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    = += -= *= /= %= &= ^= |= <<= >>= >>>= 

它們的意思是conditional operator,這是一個三元操作者(操作者接受三個操作數)並且當它發生時,只有一個Java有。

+0

它只是乘法或全部算術運算 – ABAJAVa

+0

您可能是對的。當我們在小學時,我們不知道什麼數學將會有用,但是在編程時它是+1 –

+0

@ABAJAVa Java遵循優先規則,就像基本數學一樣.https://www.mathsisfun.com/operation- order-bodmas.html –

1

乘法(*)算術優先於加法(+)。在第一次迭代中,ij都是1。首先要計算的是j*2,即1*2=2。然後我們添加i和以前計算的產品並獲得1+2=3

相關問題