2016-08-01 17 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); 
    } 
} 

wenn Sie den obigen Code ausführen gemacht werden I-Ausgang alswie viele arithmetische Operation kann auf der rechten Seite einer variablen

immer am
3 
46 
579 
681012 
79111315 

Ich bin nicht in der Lage zu verstehen, warum es erste Zeile als 3 druckt , i + j * 2 = 4 gemäß der Logik.

+1

Dies ist, was ein Debugger ist. Es ermöglicht Ihnen, durch Ihr Programm zu gehen und zu sehen, was jede Zeile tut. –

+3

Ich glaube nicht, dass Sie diese Ausgabe bekommen. Da gibt es nichts, was neue Zeilen druckt. –

+4

Warum denkst du, 1 + 1 * 2 ist 4? Ich glaube, es ist 3. –

Antwort

5

Ich kann nicht verstehen, warum es erste Zeile als 3, i + j * 2 = 4 gemäß der Logik drucken.

Vorrang. Die Multiplikation hat Vorrang vor der Addition, so dass beim ersten Aufruf i+j*21+1*2 ist, also 1+(1*2), also 1+2, also 3.

Der Vorrang von Grundoperationen können mit PEMDAS oder BODMAS erinnert werden (die „MD“ und „AS“ haben die gleiche Priorität, also habe ich sie in einer einzigen Zeile dargestellt):

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

Powers (2^5), Quadratwurzeln usw.

Die Java-Seite hat a page on operator precedence, die in dieser Tabelle hat:

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

Sie bedeuten die conditional operator, die ist ein ternäre Operator (ein Operator akzeptieren drei Operanden) und wie es geschieht, die einzige Java hat.

+0

Ist es nur Multiplikation oder alle arithmetische Operation – ABAJAVa

+0

Sie könnten Recht haben. Wenn wir in der Grundschule sind, wissen wir nicht, wofür Mathe nützlich sein wird, aber bei der Programmierung ist es +1 –

+0

@ABAJAVa Java folgt den Regeln des Vorrangs wie einfache Mathematik.https: //www.mathsisfun.com/operation- order-bodmas.html –

1

Multiplikation (*) hat arithmetische Priorität gegenüber Addition (+). In der ersten Iteration sind i und j beide 1. Die erste zu berechnende Sache ist j*2, d.h. 1*2=2. Dann fügen wir i und das zuvor berechnete Produkt hinzu und erhalten 1+2=3.