Java-casting-Fehler: unerwarteter Typ. required: variable found: value
In Java, ich versuche zum umwandeln eines int in ein double und dann wieder ein int.
Bin ich immer diese Fehlermeldung:
unexpected type
(double)(result) = Math.pow((double)(operand1),(double)(operand2));
^
required: variable
found: value
Aus diesem code:
(double)(result) = Math.pow((double)(operand1),(double)(operand2));
return (int)(result);
Was hat die Fehlermeldung zu bedeuten?
...wenn
Ich habe es ausprobiert, und es sagt, die gleiche Sache, unerwartetes geben
Das problem, das den Fehler verursacht ist, dass Sie casting auf der linken Seite eines zuweisungsoperators. Die Besetzung muss unmittelbar rechts von dem Gleichheitszeichen und entweder ein Doppel-oder Doppel-Ergebnis auf der linken Seite.
result
ist ein int
, warum nicht nur die Besetzung der pow
Ergebnis zu int
?Ich habe es ausprobiert, und es sagt, die gleiche Sache, unerwartetes geben
Das problem, das den Fehler verursacht ist, dass Sie casting auf der linken Seite eines zuweisungsoperators. Die Besetzung muss unmittelbar rechts von dem Gleichheitszeichen und entweder ein Doppel-oder Doppel-Ergebnis auf der linken Seite.
InformationsquelleAutor Ivan_Stepul | 2013-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht den cast von int zu double, um zu rufen, Math.pow:
Math.pow
zu einemint
(mit(int)Math.pow
) und Ihrer Vorgehensweise...Wie es sich herausstellt, absolut nichts. 🙂 grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/...
Hmm, interessant, none-the-less
InformationsquelleAutor UFL1138
Die Meldung bedeutet nur, dass Sie verbockt haben die syntax. Das casting braucht, um zu gehen auf der rechten Seite von dem Gleichheitszeichen, nicht vor die variable, die Sie zuweisen.
InformationsquelleAutor Dawood ibn Kareem
Diesen code in Java:
Wirft einen compile-Zeit-Fehler:
Casts sind nicht erlaubt, die auf einer Variablen Links vom Gleichheitszeichen zugewiesen wird. Es macht nicht einmal Sinn, was der code bedeuten würde. Sie werden versuchen, Sie daran zu erinnern den compiler, dass die variable ein double? Als wenn es nicht schon wissen?
InformationsquelleAutor Eric Leschinski
werden Sie wahrscheinlich wollen:
oder gleichwertig aber einfacher:
oder auch:
InformationsquelleAutor necromancer
Lassen Sie uns davon ausgehen, dass
result
ist eigentlich eindouble
, dann würden Sie einfach nur tun müssen...Nun, lassen Sie uns davon ausgehen, dass
result
ist eigentlichint
, dann werden Sie einfach tun müssen...Aktualisiert
Feedback von Patricia Shanahan, es gibt eine Menge unnötigen Lärm in den code. Ohne weiteren Kontext ist es schwer zu sagen, voll und ganz, aber es ist unwahrscheinlich (und wenig hilfreich) zu Fall
operand1
undoperand2
explizit aufdouble
. Java-fähig ist, erledigt dies von selbst.Ich bin nicht der downvoter, und nur downvote mit einem erklärenden Kommentar. Aber ich bin nicht einverstanden mit der expliziten casts, doppelklicken Sie auf die Mathematik.pow Argumente.
Das ist der OP-code, aber das ist keine Entschuldigung. Ohne zu wissen, was
operand1
undoperand2
, es ist schwer zu sagen. Ich will hinzufügen, einen zusätzlichen KommentarWenn verdoppeln, könnte das Ziel einer narrowing primitive conversion, es wäre Operanden-Typen für das casting-Konvertierung funktionieren würde, aber method invocation conversion nicht. Es gibt keine narrowing primitive conversions, die erzeugen eine Doppel -, also es gibt keine Art für operand1 oder operand2, für die die Besetzung ist sowohl zulässig und erforderlich.
danke für die zusätzliche info!
InformationsquelleAutor MadProgrammer