Sonstiges

Mac 'String-Index außerhalb des Bereichs: 0' ...Kann mir jemand sagen, was hier nicht stimmt? (Java)

Verfolgung R

Originalplakat
8. Mai 2008
PDX
  • 2. Juni 2009
Ich habe gerade dieses Programm für meine Java-Klasse geschrieben. Es ist ein einfaches Programm, das berechnet, wie viel es kostet, einen Zaun zu installieren. Am Ende wird gefragt: 'Möchten Sie eine weitere Schätzung vornehmen (J/N)', und der Benutzer soll Ja oder Nein auswählen. Nachdem ich jedoch mit meinem fertig bin, bekomme ich diese Option nicht, es heißt nur:

Berechnen Sie eine andere Schätzung (J/N): Ausnahme im Thread 'main' java.lang.StringIndexOutOfBoundsException: Stringindex außerhalb des Bereichs: 0
at java.lang.String.charAt (String.java:558)
bei Test1.main(Test1.java:73)

Warum tut es das!!!

Hier übrigens das Programm:

Code: |_+_|

Littleodie914

9. Juni 2004


Rochester, NY
  • 2. Juni 2009
Wow, das ist schwierig. Ich habe es zum Laufen gebracht, indem ich Ihre letzte 'read.nextLine()' in nur 'read.next()' geändert habe, aber ich werde etwas genauer hinschauen, um zu sehen, warum es auf die erste Weise nicht funktioniert.

Bearbeiten: Es scheint etwas mit der Methode nextLine() zu tun zu haben, die den Zeiger über die aktuelle Zeile hinaus bewegt. Ich verstehe es selbst nicht so sehr, aber diese Links könnten helfen, ein wenig Verwirrung zu beseitigen:

API-Scanner
Zugehöriger Forumsbeitrag

HiRez

6. Januar 2004
Westen der USA
  • 2. Juni 2009
Ich vermute, dass einer von Ihnen früher Leseaufrufe hinterlassen das Newline-Zeichen im Tastatureingabepuffer. Wenn Sie nextLine() aufrufen, erhalten Sie daher einen leeren String, was dazu führt, dass die Ausnahme versucht, Zeichen an Position 0 zu untersuchen, da keine vorhanden ist. Dies ist auch ein Problem bei vielen der C-Funktionen der Konsoleneingabe. Irgendwie möchten Sie wahrscheinlich zuerst den Puffer mit einem Dummy-Read-Aufruf oder so löschen. Ich habe Java schon lange nicht mehr verwendet, daher weiß ich nicht, was genau das richtige Verfahren wäre.

gnasher729

Ausgesetzt
25. November 2005
  • 2. Juni 2009
Chase R sagte: Ich habe gerade dieses Programm für meine Java-Klasse geschrieben. Es ist ein einfaches Programm, das berechnet, wie viel es kostet, einen Zaun zu installieren. Am Ende wird gefragt: 'Möchten Sie eine weitere Schätzung vornehmen (J/N)', und der Benutzer soll Ja oder Nein auswählen. Nachdem ich jedoch mit meinem fertig bin, bekomme ich diese Option nicht, es heißt nur:

Berechnen Sie eine andere Schätzung (J/N): Ausnahme im Thread 'main' java.lang.StringIndexOutOfBoundsException: Stringindex außerhalb des Bereichs: 0
at java.lang.String.charAt (String.java:558)
bei Test1.main(Test1.java:73)

Warum tut es das!!!

Da Sie den Quellcode wahrscheinlich in einem Programmeditor haben, der dazu gebracht werden kann, Zeilennummern anzuzeigen, sollten Sie in der Datei Test1.main die Zeile 73 finden können. Das zeigt Ihnen, wo das Problem auftritt.

Jetzt haben Sie eine Ausnahme, die besagt, dass ein Index von 0 'außerhalb des zulässigen Bereichs' ist. Wenn Sie auf eine Zeichenfolge mit n Zeichen zugreifen, welche Indizes sind gültig?

Können Sie uns nun sagen, in welcher Situation der Index 0 kein gültiger Index ist?

Das sollte deine Frage beantworten.

SilentPanda

emeritierter Moderator
8. Oktober 2002
Der Bambuswald
  • 2. Juni 2009
gnasher729 sagte: Da Sie den Quellcode wahrscheinlich in einem Programmeditor haben, der Zeilennummern anzeigen kann, sollten Sie in der Datei Test1.main herausfinden können, wo Zeile 73 ist. Das zeigt Ihnen, wo das Problem auftritt.

Die Zeile lautet:

Code: |_+_|
direkt nach der Anzeige 'Weitere Schätzung berechnen (J/N):'