Annen

Mac 'String index out of range: 0' ...Kan noen fortelle meg hva som er galt her? (Java)

Chase R

Original plakat
8. mai 2008
PDX
  • 2. juni 2009
Jeg har nettopp skrevet ferdig dette programmet for Java-klassen min. Det er et enkelt program som beregner hvor mye det koster å installere et gjerde. På slutten spør den 'vil du gjøre et nytt estimat (J/N)', og brukeren antar å velge ja eller nei. Men etter at jeg er ferdig med å kjøre min, får jeg ikke det alternativet, det står bare:

Beregn et annet estimat (J/N): Unntak i trådens 'hoved' java.lang.StringIndexOutOfBoundsException: Strengindeks utenfor området: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Hvorfor gjør den dette!!!

Her er programmet forresten:

Kode: |_+_|

Littleodie914

9. juni 2004


Rochester, NY
  • 2. juni 2009
Wow, det er vanskelig. Jeg fikk det til å fungere ved å endre den siste 'read.nextLine()' til bare 'read.next()', men jeg skal se litt nærmere for å se hvorfor det ikke fungerer den første måten.

Redigere: Det ser ut til å ha noe å gjøre med at nextLine()-metoden fremmer pekeren forbi gjeldende linje. Jeg forstår det ikke så mye selv, men disse koblingene kan hjelpe til med å oppklare litt forvirring:

API-skanner
Relatert foruminnlegg

HeiRez

6. januar 2004
Vest-USA
  • 2. juni 2009
Jeg skal gjette at en av dine dine tidligere leseanrop forlater nylinjetegnet i tastaturinndatabufferen. Derfor, når du kaller nesteLine(), får du en tom streng, noe som fører til at unntaket prøver å undersøke tegn ved posisjon 0, siden det ikke er noen. Dette er også et problem med mange av funksjonene for konsollinngang C. På en eller annen måte vil du sannsynligvis skylle bufferen først med et dummy-leseanrop eller noe. Jeg har ikke brukt Java på lenge, så jeg vet ikke nøyaktig hva den riktige prosedyren vil være.

gnasher729

Suspendert
25. november 2005
  • 2. juni 2009
Chase R sa: Jeg har nettopp skrevet ferdig dette programmet for Java-klassen min. Det er et enkelt program som beregner hvor mye det koster å installere et gjerde. På slutten spør den 'vil du gjøre et nytt estimat (J/N)', og brukeren antar å velge ja eller nei. Men etter at jeg er ferdig med å kjøre min, får jeg ikke det alternativet, det står bare:

Beregn et annet estimat (J/N): Unntak i trådens 'hoved' java.lang.StringIndexOutOfBoundsException: Strengindeks utenfor området: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Hvorfor gjør den dette!!!

Siden du har kildekoden, sannsynligvis i et programredigeringsprogram som kan fås til å vise linjenummer, bør du kunne finne hvor linje 73 i filen Test1.main er. Det vil vise deg hvor problemet oppstår.

Nå har du et unntak som sier at en indeks på 0 er 'utenfor området'. Hvis du får tilgang til en streng med n tegn, hva er de gyldige indeksene?

Nå kan du fortelle oss i nøyaktig hvilken situasjon er indeksen 0 ikke en gyldig indeks?

Det burde svare på spørsmålet ditt.

SilentPanda

Moderator emeritus
8. oktober 2002
Bambusskogen
  • 2. juni 2009
gnasher729 sa: Siden du har kildekoden, sannsynligvis i et programredigeringsprogram som kan fås til å vise linjenummer, bør du kunne finne hvor linje 73 i filen Test1.main er. Det vil vise deg hvor problemet oppstår.

Linjen er:

Kode: |_+_|
rett etter at den viser 'Beregn et annet estimat (J/N):'