Ander

Mac 'String index buiten bereik: 0' ...Kan iemand mij vertellen wat hier mis is? (Java)

Chase R

originele poster
8 mei 2008
PDX
  • 2 juni 2009
Ik ben net klaar met het schrijven van dit programma voor mijn java-klas. Het is een eenvoudig programma dat berekent hoeveel het kost om een ​​omheining te plaatsen. Aan het einde wordt gevraagd 'wil je nog een schatting maken (J/N)', en de gebruiker wordt verondersteld ja of nee te kiezen. Echter, nadat ik klaar ben met het uitvoeren van de mijne, krijg ik die optie niet, er staat alleen:

Een andere schatting berekenen (J/N): Uitzondering in thread 'main' java.lang.StringIndexOutOfBoundsException: Stringindex buiten bereik: 0
op java.lang.String.charAt (String.java:558)
bij Test1.main(Test1.java:73)

Waarom doet het dit!!!

Hier is trouwens het programma:

Code: |_+_|

Littleodie914

9 juni 2004


Rochester, New York
  • 2 juni 2009
Wauw, dat is lastig. Ik heb het werkend gekregen door je laatste 'read.nextLine()' te veranderen in gewoon 'read.next()', maar ik zal wat beter kijken om te zien waarom het niet op de eerste manier werkt.

Bewerking: Het lijkt iets te maken te hebben met de methode nextLine() die de aanwijzer voorbij de huidige regel brengt. Ik begrijp het zelf niet zo goed, maar deze links kunnen misschien wat verwarring wegnemen:

API-scanner
Gerelateerd forumbericht

HiRez

6 januari 2004
westelijke VS
  • 2 juni 2009
Ik ga raden dat die van jou is vorig leesoproepen laten het nieuwe regelteken achter in de toetsenbordinvoerbuffer. Daarom, wanneer u nextLine() aanroept, krijgt u een lege tekenreeks, wat leidt tot de uitzondering die probeert het teken op positie 0 te onderzoeken, aangezien er geen is. Dit is ook een probleem met veel van de C-functies van de console-ingang. Op de een of andere manier wil je waarschijnlijk eerst de buffer doorspoelen met een dummy read-oproep of zoiets. Ik heb Java al een lange tijd niet meer gebruikt, dus ik weet niet precies wat de juiste procedure zou zijn.

gnasher729

Opgeschort
25 november 2005
  • 2 juni 2009
Chase R zei: Ik ben net klaar met het schrijven van dit programma voor mijn Java-klas. Het is een eenvoudig programma dat berekent hoeveel het kost om een ​​omheining te plaatsen. Aan het einde wordt gevraagd 'wil je nog een schatting maken (J/N)', en de gebruiker wordt verondersteld ja of nee te kiezen. Echter, nadat ik klaar ben met het uitvoeren van de mijne, krijg ik die optie niet, er staat alleen:

Een andere schatting berekenen (J/N): Uitzondering in thread 'main' java.lang.StringIndexOutOfBoundsException: Stringindex buiten bereik: 0
op java.lang.String.charAt (String.java:558)
bij Test1.main(Test1.java:73)

Waarom doet het dit!!!

Aangezien je de broncode hebt, waarschijnlijk in een programma-editor die regelnummers kan weergeven, zou je moeten kunnen vinden waar regel 73 in het bestand Test1.main is. Dat laat zien waar het probleem zich voordoet.

Nu heb je een uitzondering die zegt dat een index van 0 'buiten bereik' is. Als u een tekenreeks met n tekens gebruikt, wat zijn dan de geldige indices?

Kunt u ons nu vertellen in welke situatie de index 0 geen geldige index is?

Dat zou je vraag moeten beantwoorden.

Stille Panda

emeritus moderator
8 okt 2002
Het Bamboebos
  • 2 juni 2009
gnasher729 zei: Aangezien je de broncode hebt, waarschijnlijk in een programma-editor die regelnummers kan weergeven, zou je moeten kunnen vinden waar regel 73 in het bestand Test1.main is. Dat laat zien waar het probleem zich voordoet.

De lijn is:

Code: |_+_|
direct nadat 'Bereken nog een schatting (J/N):' wordt weergegeven