| 

.NET C# Java Javascript Exception

3
Hallo zusammen,
ich hoffe ihr könnt mir helfen.
Folgendes Problem, bei dem ich nicht klar komme.
ich habe eine Abfrage, bei der in jeder if - Verzweigung eine andere
Methode mit dem jeweiligen Rechenergebnis ausgegeben werden soll, der Einfachheit halber habe ich einfach zur Verdeutlichung einen anderen
Wert zur Visualisierung in das Textfeld VG geschrieben.
Leider bekomme ich die dritte abfrage nicht zur Ausführung
Kann mir jemand einen Tipp zur Lösung geben.
Wie fragt man das ab?
agtaetig.setChecked(false);
btBerechnen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
VG.setText("100");

if (agtaetig.isChecked()) {
VG.setText("200");
} else if (agtaetig.isChecked() &&
Double.parseDouble(edStW.getText().toString()) > Double
.parseDouble(edstAw_ag.getText().toString()))

VG.setText("300");
}
});


danke !
News:
27.07.2013
Lukos 37 5
3 Antworten
2
15 Aufrufe und keiner weiss die Antwort? Hey......
Auch ohne große Java-Kenntnisse sollte die Lösung einfach sein. Vertausche beide If-Abfragen.
if (agtaetig.isChecked() &&
Double.parseDouble(edStW.getText().toString()) > Double
.parseDouble(edstAw_ag.getText().toString())) {
VG.setText("300");
} else if (agtaetig.isChecked()) {
VG.setText("200");
}


Des Rätsels Lösung ist recht einfach, wenn ich hier nicht komplett daneben liege.
Abstrahiert prüfst Du erst ob A = True ist. Falls ja, wird 200 ausgegeben.
Anschließend im If else-Teil prüfst Du ob A = True und irgendwas anderes auch noch eintritt. Der Teil KANN nie ausgeführt werden, da der erste TEil schon ausgeführt wurde, da A = True ja bereits übereinstimmte.

Merke: Zuerst die komplexeren Abfragen in einen If-Teil packen und erst im Anschluss dann die weniger komplexen. Dann klappt es auch mit der Ausgabe.

Meine persönliche Empfehlung wäre hier noch, einen weiteren Else-Teil für VG.SetText("100") einzuführen, der dann nur ausgeführt wird, wenn die Vorbedingungen nicht zutreffen (d.h. !agtaetig.isChecked()). Denn so würde der Text in VG immer zuerst auf 100 gesetzt und anschließend ggfs. überschrieben werden. Ich weiss, das der VG-Teil nur für Dich zum testen des Problem war, aber solltest Du wirklich eine optische Rückmeldung an die UI geben, dann ist es eleganter, wenn man nicht zwei mal direkt hintereinander eine solche grundlos abgibt. Aber das ist nur meine persönliche Meinung.


PS: Falls Die Antwort korrekt war, hake die bitte mit dem grünen Häckchen ab, dann wissen andere mit einer vergleichbaren Frage, dass die Antwort geholfen hat. Dankeschön.
28.07.2013
Jens Duczmal 2,6k 1 3 9
Jens Duczmal 2,6k 1 3 9
0
Jens Lösung ist richtig. Wenn du deine Abfragen so aufbaust, wird es noch übersichtlicher:
if (agtaetig.isChecked()) {
if ( Double.parseDouble(edStW.getText().toString()) > Double.parseDouble(edstAw_ag.getText().toString())) {
VG.setText("300");}
else {
VG.setText("200");
}
}
28.07.2013
KN 1,7k 1 8
Stimmt natürlich. Ich schiebe als Schuldigen die Uhrzeit vor :)
Jens Duczmal 28.07.2013
passiert uns doch allen mal, dass wir sowas übersehen :-)
KN 28.07.2013
0
Hallo danke beiden,
das war es, insbesondere der Merke - Satz.
vg
Lukos
28.07.2013
Lukos 37 5

Stelle deine Checkbox-Frage jetzt!