Frage von Makichan, 82

Java-Programm läuft nicht?

Hallo,

ich habe die Aufgabe, in Java ein Programm zu schreiben, das eine Zahl über eine Dialogbox einliest und prüft, ob es sich um eine zweistellige Zahl handelt. Dann soll es aus dieser zweistelligen Zahl die Quersumme ausrechnen. Leider funktioniert die Berechnung der Quersumme nicht. Ich bekomme immer eine Fehlermeldung (FM und Code siehe Anhang), aber finde den fehler nicht. Könnt ihr mir da bitte helfen?

Gruß, Maki

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von ceevee, 30

Du hast eine zweistellige Zahl und greifst mit

zahl.substring(2)

auf die dritte Stelle zu. Eine dritte Stelle gibt es bei zweistelligen Zahlen aber nicht und deswegen knallt es. Richtig wäre es, wenn du zahl.substring(0) und zahl.substring(1) nutzt. Arrays, Strings, ... fangen in der Programmierung immer bei 0 an zu zählen, nicht bei 1.

Kommentar von rmnstr ,

zahl.substring(0) würde aber wieder den ganzen String zurückliefern, wirklich richtig wären:

zahl.substring(0, 1);
zahl.substring(1);
Kommentar von Makichan ,

Danke. Jetzt klappt es. :)

Kommentar von ceevee ,

Gern geschehen. Der Kommentar von rmnstr ist absolut korrekt, da hab ich nicht aufgepasst. :)

Antwort
von Willibergi, 40

Du musst schon eine Zahl eingeben, damit das Programm funktioniert. :p

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach. 

LG Willibergi 

Kommentar von Makichan ,

Die Zahl gebe ich ja direkt am Anfang mit "String zahl = JOptionPane.showInputDialog("Geben Sie eine zweistellige Zahl ein.");" ein und wandele sie dann mit "int c = Integer.parseInt(zahl.substring(1));" und "int d = Integer.parseInt(zahl.substring(2));" in der else-Anweisung in Integer-Werte um. von daher verstehe ich deine Anmerkung nicht...

Antwort
von fragenbuch, 25

Die Eingabe muss eine Zahl sein und kein String, also auch nicht "" (leeres Feld, bzw keine Eingabe)

Kommentar von Makichan ,

Deshalb ja die Typumwandlung in der else-Anweisung. Ich verstehe deine Anmerkung ehrlich gesagt nicht...

Keine passende Antwort gefunden?

Fragen Sie die Community