Andet

Mac 'String index out of range: 0' ... Kan nogen fortælle mig, hvad der er galt her? (Java)

Chase R

Original plakat
8. maj 2008
PDX
  • 2. juni 2009
Jeg er lige blevet færdig med at skrive dette program til min java-klasse. Det er et simpelt program, der beregner, hvor meget det koster at installere et hegn. Til sidst spørger den 'vil du lave endnu et skøn (J/N)', og brugeren formodes at vælge ja eller nej. Men når jeg er færdig med at køre min, får jeg ikke den mulighed, den siger bare:

Beregn et andet estimat (J/N): Undtagelse i trådens 'hoved' java.lang.StringIndexOutOfBoundsException: Strengindeks uden for område: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Hvorfor gør den dette!!!

Her er i øvrigt programmet:

Kode: |_+_|

Littleodie914

9. juni 2004


Rochester, NY
  • 2. juni 2009
Wow, det er svært. Jeg fik det til at virke ved at ændre din sidste 'read.nextLine()' til kun 'read.next()', men jeg vil se lidt nærmere på, hvorfor det ikke virker på den første måde.

Redigere: Det ser ud til at have noget at gøre med, at metoden nextLine() fører markøren videre ud over den aktuelle linje. Jeg forstår det ikke så meget selv, men disse links kan måske hjælpe med at opklare lidt forvirring:

API scanner
Relateret forumindlæg

HejRez

6. januar 2004
Vestlige USA
  • 2. juni 2009
Jeg vil gætte på, at en af ​​dine dine Tidligere læste opkald forlader nylinjetegnet i tastaturets inputbuffer. Derfor, når du kalder nextLine(), får du en tom streng, hvilket fører til, at undtagelsen forsøger at undersøge tegn ved position 0, da der ikke er nogen. Dette er også et problem med mange af konsolindgangs C-funktionerne. På en eller anden måde vil du sandsynligvis skylle bufferen først med et dummy-læseopkald eller noget. Jeg har ikke brugt Java i lang tid, så jeg ved ikke præcis, hvad den rigtige procedure ville være.

gnasher729

Suspenderet
25. november 2005
  • 2. juni 2009
Chase R sagde: Jeg er lige blevet færdig med at skrive dette program til min java-klasse. Det er et simpelt program, der beregner, hvor meget det koster at installere et hegn. Til sidst spørger den 'vil du lave endnu et skøn (J/N)', og brugeren formodes at vælge ja eller nej. Men når jeg er færdig med at køre min, får jeg ikke den mulighed, den siger bare:

Beregn et andet estimat (J/N): Undtagelse i trådens 'hoved' java.lang.StringIndexOutOfBoundsException: Strengindeks uden for område: 0
på java.lang.String.charAt (String.java:558)
på Test1.main(Test1.java:73)

Hvorfor gør den dette!!!

Da du har kildekoden, sandsynligvis i en programeditor, der kan fås til at vise linjenumre, burde du kunne finde, hvor linje 73 i filen Test1.main er. Det vil vise dig, hvor problemet opstår.

Nu har du en undtagelse, der siger, at et indeks på 0 er 'uden for rækkevidde'. Hvis du får adgang til en streng med n tegn, hvad er de gyldige indekser?

Kan du nu fortælle os, i præcis hvilken situation er indekset 0 ikke et gyldigt indeks?

Det burde besvare dit spørgsmål.

SilentPanda

Moderator emeritus
8. oktober 2002
Bambusskoven
  • 2. juni 2009
gnasher729 sagde: Da du har kildekoden, sandsynligvis i en programeditor, der kan fås til at vise linjenumre, burde du kunne finde, hvor linje 73 i filen Test1.main er. Det vil vise dig, hvor problemet opstår.

Linjen er:

Kode: |_+_|
lige efter det viser 'Beregn et andet skøn (J/N):'