Hallo zusammen, ich versuche ein kleines Program zu schreiben, und nun bin ich auf das folgende Problem gestoßen : "int i; cannot be return i; return "must be a boolean";"
Ich konnte "return type" auf int setzen, aber in diesem Code brauche ich unbedinget boolean!
So mein Frage ist nun, wie kann man das es am besten machen?
Vielen Dank im Voraus
Code:
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
int i;
if (event != null)
if ((event.getKeyCode() == 23) || (event.getKeyCode() == 66))
i = 0;
while (true) {
return i;
if (!event.isShiftPressed()) {
if (isPreparedForSending())
confirmSendMessageIfNeeded();
i = 1;
continue;
}
i = 0;
continue;
if (isPreparedForSending())
confirmSendMessageIfNeeded();
i = 1;
}
ja, die Sachlage ist klar und ziemlich undiskutierbar,
die Hinweise im Text sind nicht zielführend, vergleichbar mit
'es ist jetzt Tag, aber ich brauch unbedingt Nacht, wenn ich aber bis Mitternacht warte, dann ist es zu dunkel,
wie kann man das es am besten machen?'
Du kannst nur EINMAL returnen, der ganze code danach wird nicht ausgeführt. deswegen macht
Java:
while(true){return i;...}
keinen Sinn. Nach return bricht er einfach ab.
und erzeuge doch einfach einen boolean! Statt int i; dann boolean bool; und anstatt i=0; bool=false; und statt i=1; bool=true; Damit ist dann eh allles gegessen.
Gute Nacht allerseits,
mfg
BH16
PS: in einem halben Jahr, wenn du dies hier liest, wirst du auch nur noch lachen können DD Und das ist nicht gemein gemeint, jeder hat mal so begonnen.
Kann sein das ich mich irre, aber ich glaube diese Methodensignatur ist doch eine Methode die ein Listenerinterface vorgibt, oder? Dann bedeutet der Rückgabewert true das du das Event verwertet hast und false bedeutet das es nicht verwertet wurde. Bei false werden weitere Listener in der Liste der angemeldeten Listener abgearbeitet. Wenn das der Fall ist würde ich einfach am Ende true zurückgeben, denn so wie das für mich wirkt, verwertest du das Ereignis ja. Das ist aber nur eine Vermutung, ich dachte nämlich ich hätte die Methodensignatur schon mal gesehen, weiß aber nciht wo.
Mal abgesehen von dieser Vermutung hab ich auch noch handfestes, das schon teilweise angesprochen wurde:
Code der nach einem return steht wird nicht mehr ausgeführt. Der Aufbau der Whileschleife macht wenig Sinn. Und selbst wenn das Return weg ist,
Java:
if(isPreparedForSending())confirmSendMessageIfNeeded();
i =1;
wird trotzdem nicht ausgeführt da das continuedavor bereits die Whileschleife wiederholt.
allein dadurch dass diese Version doch jetzt kompilierbar ist, die vorherige nicht, zeigt sich doch schon ein gewisser Sinn-Level-Unterschied,
das kann dir jeder Java-Kompiler sagen, verwendest du das Forum so wie einen Arbeitssklaven Maschine?
und nein, entschuldigen musst du dich nie, du nervst auch keinen hier,
nur aus den Hinweisen Schlüsse ziehen