Iné

Mac 'Index reťazca mimo rozsah: 0' ...Môže mi niekto povedať, čo je tu zle? (Java)

Chase R

Pôvodný plagát
8. mája 2008
PDX
  • 2. júna 2009
Práve som dokončil písanie tohto programu pre moju triedu java. Je to jednoduchý program, ktorý vypočíta, koľko stojí inštalácia plotu. Na konci sa spýta „chceli by ste urobiť ďalší odhad (Á/N)“ a používateľ by si mal vybrať áno alebo nie. Keď však dokončím svoju činnosť, túto možnosť nedostanem, len sa tam píše:

Vypočítať ďalší odhad (Á/N): Výnimka vo vlákne 'main' java.lang.StringIndexOutOfBoundsException: Index reťazca je mimo rozsahu: 0
na java.lang.String.charAt (String.java:558)
na Test1.main(Test1.java:73)

Prečo to robí!!!

Tu je mimochodom program:

Kód: |_+_|

Littleodie914

9. júna 2004


Rochester, NY
  • 2. júna 2009
Wow, to je zložité. Spustil som to zmenou vášho posledného 'read.nextLine()' na len 'read.next()', ale pozriem sa trochu bližšie, aby som zistil, prečo to nefunguje prvým spôsobom.

Upraviť: Zdá sa, že to má niečo spoločné s metódou nextLine(), ktorá posúva ukazovateľ za aktuálny riadok. Sám tomu až tak nerozumiem, ale tieto odkazy by mohli pomôcť objasniť zmätok:

API skener
Súvisiaci príspevok na fóre

HiRez

6. januára 2004
Západné USA
  • 2. júna 2009
Budem hádať, že jeden z vašich predchádzajúce čítacie volania opúšťajú znak nového riadku vo vstupnej vyrovnávacej pamäti klávesnice. Preto, keď zavoláte nextLine(), dostanete prázdny reťazec, ktorý vedie k výnimke, ktorá sa pokúša preskúmať znak na pozícii 0, pretože tam žiadny nie je. Toto je tiež problém s mnohými funkciami vstupu C konzoly. Asi budete chcieť najskôr vyprázdniť vyrovnávaciu pamäť fiktívnym čítaním alebo tak niečo. Javu som dlho nepouzival tak neviem aky by bol presne spravny postup.

gnasher729

Pozastavené
25. novembra 2005
  • 2. júna 2009
Chase R povedal: Práve som dokončil písanie tohto programu pre moju triedu java. Je to jednoduchý program, ktorý vypočíta, koľko stojí inštalácia plotu. Na konci sa spýta „chceli by ste urobiť ďalší odhad (Á/N)“ a používateľ by si mal vybrať áno alebo nie. Keď však skončím, túto možnosť nedostanem, len sa tam píše:

Vypočítať ďalší odhad (Á/N): Výnimka vo vlákne 'main' java.lang.StringIndexOutOfBoundsException: Index reťazca je mimo rozsahu: 0
na java.lang.String.charAt (String.java:558)
na Test1.main(Test1.java:73)

Prečo to robí!!!

Keďže máte zdrojový kód, pravdepodobne v programovom editore, ktorý dokáže zobraziť čísla riadkov, mali by ste byť schopní nájsť riadok 73 v súbore Test1.main. To vám ukáže, kde je problém.

Teraz máte výnimku, ktorá hovorí, že index 0 je „mimo rozsah“. Ak pristupujete k reťazcu s n znakmi, aké sú platné indexy?

Môžete nám teraz presne povedať, v ktorej situácii nie je index 0 platným indexom?

To by malo zodpovedať vašu otázku.

SilentPanda

Emeritný moderátor
8. októbra 2002
Bambusový les
  • 2. júna 2009
gnasher729 povedal: Keďže máte zdrojový kód, pravdepodobne v programovom editore, ktorý dokáže zobraziť čísla riadkov, mali by ste byť schopní nájsť riadok 73 v súbore Test1.main. To vám ukáže, kde je problém.

Riadok je:

Kód: |_+_|
hneď po zobrazení „Vypočítať ďalší odhad (Á/N):“