Övrig

Mac 'String index out of range: 0' ...Kan någon berätta för mig vad som är fel här? (Java)

Jaga R

Originalaffisch
8 maj 2008
PDX
  • 2 juni 2009
Jag har precis skrivit klart det här programmet för min javaklass. Det är ett enkelt program som räknar ut hur mycket det kostar att installera ett staket. I slutet frågar den 'vill du göra en annan uppskattning (J/N)', och användaren antas välja ja eller nej. Men när jag är klar med att köra min kommer jag inte att få det alternativet, det säger bara:

Beräkna en annan uppskattning (J/N): Undantag i trådens 'huvud' java.lang.StringIndexOutOfBoundsException: Strängindex utanför intervallet: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Varför gör den så här!!!

Här är programmet förresten:

Kod: |_+_|

Littleodie914

9 juni 2004


Rochester, NY
  • 2 juni 2009
Oj, det är knepigt. Jag fick det att fungera genom att ändra din senaste 'read.nextLine()' till bara 'read.next()', men jag ska titta lite närmare för att se varför det inte fungerar på första sättet.

Redigera: Det verkar ha något att göra med att metoden nextLine() flyttar fram pekaren bortom den aktuella raden. Jag förstår det inte så mycket själv, men dessa länkar kan hjälpa till att reda ut lite förvirring:

API-skanner
Relaterat foruminlägg

HiRez

6 januari 2004
Västra USA
  • 2 juni 2009
Jag ska gissa att en av dina dina tidigare lässamtal lämnar nyradstecknet i tangentbordsinmatningsbufferten. Därför, när du anropar nextLine(), får du en tom sträng, vilket leder till att undantaget försöker undersöka tecknet vid position 0, eftersom det inte finns någon. Detta är också ett problem med många av funktionerna för konsolingång C. På något sätt vill du förmodligen spola bufferten först med ett dummy-lässamtal eller något. Jag har inte använt Java på länge så jag vet inte exakt vad rätt procedur skulle vara.

gnasher729

Upphängd
25 november 2005
  • 2 juni 2009
Chase R sa: Jag har precis skrivit klart det här programmet för min javaklass. Det är ett enkelt program som räknar ut hur mycket det kostar att installera ett staket. I slutet frågar den 'vill du göra en annan uppskattning (J/N)', och användaren antas välja ja eller nej. Men när jag är klar med att köra min kommer jag inte att få det alternativet, det säger bara:

Beräkna en annan uppskattning (J/N): Undantag i trådens 'huvud' java.lang.StringIndexOutOfBoundsException: Strängindex utanför intervallet: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Varför gör den så här!!!

Eftersom du har källkoden, förmodligen i en programredigerare som kan fås att visa radnummer, bör du kunna hitta var rad 73 i filen Test1.main finns. Det visar dig var problemet uppstår.

Nu har du ett undantag som säger att ett index på 0 är 'utom intervallet'. Om du kommer åt en sträng med n tecken, vilka är de giltiga indexen?

Kan du nu berätta för oss i exakt vilken situation är index 0 inte ett giltigt index?

Det borde svara på din fråga.

SilentPanda

Moderator emeritus
8 oktober 2002
Bambuskogen
  • 2 juni 2009
gnasher729 sa: Eftersom du har källkoden, förmodligen i en programredigerare som kan fås att visa radnummer, bör du kunna hitta var rad 73 i filen Test1.main finns. Det visar dig var problemet uppstår.

Linjen är:

Kod: |_+_|
direkt efter att det visas 'Beräkna en annan uppskattning (J/N):'