2009-09-03 13 views
0

Enthält die folgende Java-Anweisung einen Fehler? Wenn ja, was ist das?Fehler in Java-Ausdruck

P *= x/y 
+0

Was sind die Typen der Variablen? –

+7

Sie verpassen ein Semikolon. Auch der Rest des Programms. Ein bestimmter Kontext wäre nützlich. – moonshadow

+0

Ich muss logische Fehler finden .. – compgeek

Antwort

0

Es fehlt ein Semikolon

Wenn es mehr Fehler ist, es auf die Art der P, x und y abhängt. Sie müssen Nummerntypen sein

+1

Funktioniert für jeden numerischen Typ. –

0

Sieht vollkommen gut abgesehen von dem oben genannten Fehlen eines Semikolons und mögliche Probleme mit dem Typ. Diese Anweisung teilt nur x nach y, multipliziert das Ergebnis mit p und setzt diesen Wert in p. p = (p*(x/y));

0

Wenn P ein primitiver numerischer Datentyp (float, double, int usw.) ist, sollte er wahrscheinlich in Kleinbuchstaben geschrieben sein. Variablennamen in Großbuchstaben sind typischerweise für Konstanten in Java reserviert.

Auch, weil es zu (P*(x/y)) übersetzt, wenn x und y wo int und P waren float oder double, dass Sie die Antwort nicht erhalten Sie erwarten.

3

Wenn Sie suchen „logische Fehler“ und wenn die Typen alle ganzen Zahlen sind, ist es wahrscheinlich besser zu machen:

P = P*(x/y); 
:

P = (P*x)/y; 

Da der aktuelle Ausdruck (IIRC) äquivalent ist

Der letzte Ausdruck kann weniger "genau" sein, wenn die Typen Ganzzahlen sind. Zum Beispiel:

// evaluates to 3, as expected. 
(5*3)/5; 

jedoch

// Evaluates to 0 because of truncation. 
5*(3/5); 

Sie müssen also vorsichtig sein. Im Allgemeinen sollte die Division von Integer-Ausdrücken als letzter Schritt durchgeführt werden.

+1

Würde Ihr erstes Beispiel (5 * 3)/5 nicht zu 3 ausgewertet? 5 * 3 = 15 15/5 = 3 –

+0

@Mike C Hoppla, du hast Recht, ein unvorsichtiger Fehler meinerseits wird es korrigieren. – Peter