Muu

Mac 'String index out of range: 0' ...Voiko joku kertoa minulle, mikä tässä on vialla? (Java)

Chase R

Alkuperäinen juliste
8. toukokuuta 2008
PDX
  • 2. kesäkuuta 2009
Olen juuri kirjoittanut tämän ohjelman java-luokkaani. Se on yksinkertainen ohjelma, joka laskee kuinka paljon aidan asentaminen maksaa. Lopussa se kysyy 'Haluatko tehdä toisen arvion (K/E)', ja käyttäjän oletetaan valitsevan kyllä ​​tai ei. Kuitenkin, kun olen suorittanut omani, en saa tätä vaihtoehtoa, se vain sanoo:

Laske toinen arvio (K/E): Poikkeus säikeessä 'main' java.lang.StringIndexOutOfBoundsPoikkeus: Merkkijonoindeksi alueen ulkopuolella: 0
osoitteessa java.lang.String.charAt (String.java:558)
osoitteessa Test1.main(Test1.java:73)

Miksi se tekee näin!!!

Tässä muuten ohjelma:

Koodi: |_+_|

Littleodie914

9. kesäkuuta 2004


Rochester, NY
  • 2. kesäkuuta 2009
Vau, se on hankalaa. Sain sen toimimaan vaihtamalla viimeisimmän 'read.nextLine()' arvoksi 'read.next()', mutta katson hieman tarkemmin nähdäkseni, miksi se ei toimi ensimmäisellä tavalla.

Muokata: Sillä näyttää olevan jotain tekemistä nextLine()-menetelmän kanssa, joka siirtää osoittimen nykyisen rivin ulkopuolelle. Itse en sitä niin paljon ymmärrä, mutta nämä linkit saattavat auttaa selvittämään hämmennystä:

API-skanneri
Aiheeseen liittyvä keskustelupalsta

HiRez

6. tammikuuta 2004
Länsi-USA
  • 2. kesäkuuta 2009
Aion arvata, että se on sinun Edellinen lukukutsut jättävät rivinvaihtomerkin näppäimistön syöttöpuskuriin. Siksi, kun kutsut nextLine(), saat tyhjän merkkijonon, mikä johtaa poikkeukseen, joka yrittää tutkia merkkiä paikassa 0, koska sellaista ei ole. Tämä on ongelma myös monissa konsolin C-tulon toiminnoissa. Jotenkin haluat luultavasti tyhjentää puskurin ensin valelukemiskutsulla tai vastaavalla. En ole käyttänyt Javaa pitkään aikaan, joten en tiedä mikä olisi oikea menettely.

gnasher729

Keskeytetty
25. marraskuuta 2005
  • 2. kesäkuuta 2009
Chase R sanoi: Lopetin juuri tämän ohjelman kirjoittamisen java-luokkaani. Se on yksinkertainen ohjelma, joka laskee kuinka paljon aidan asentaminen maksaa. Lopussa se kysyy 'Haluatko tehdä toisen arvion (K/E)', ja käyttäjän oletetaan valitsevan kyllä ​​tai ei. Kuitenkin, kun olen suorittanut omani, en saa tätä vaihtoehtoa, se vain sanoo:

Laske toinen arvio (K/E): Poikkeus säikeessä 'main' java.lang.StringIndexOutOfBoundsPoikkeus: Merkkijonoindeksi alueen ulkopuolella: 0
osoitteessa java.lang.String.charAt (String.java:558)
osoitteessa Test1.main(Test1.java:73)

Miksi se tekee näin!!!

Koska sinulla on lähdekoodi, luultavasti ohjelmaeditorissa, joka voidaan saada näyttämään rivinumeroita, sinun pitäisi pystyä löytämään missä rivi 73 tiedostosta Test1.main on. Se näyttää sinulle, missä ongelma ilmenee.

Nyt sinulla on poikkeus, jonka mukaan indeksi 0 on 'alueen ulkopuolella'. Jos käytät merkkijonoa, jossa on n merkkiä, mitkä ovat kelvolliset indeksit?

Voitko nyt kertoa meille tarkalleen, missä tilanteessa indeksi 0 ei ole kelvollinen indeksi?

Sen pitäisi vastata kysymykseesi.

SilentPanda

Moderaattori emeritus
8. lokakuuta 2002
Bambumetsä
  • 2. kesäkuuta 2009
gnasher729 sanoi: Koska sinulla on lähdekoodi, luultavasti ohjelmaeditorissa, joka voidaan saada näyttämään rivinumeroita, sinun pitäisi pystyä löytämään missä rivi 73 tiedostossa Test1.main on. Se näyttää sinulle, missä ongelma ilmenee.

Linja on:

Koodi: |_+_|
heti sen jälkeen, kun se näyttää 'Laske toinen arvio (K/E):'