Ostalo

Mac 'Indeks niza izvan raspona: 0' ...Može li mi netko reći što ovdje nije u redu? (Java)

Chase R

Originalni poster
8. svibnja 2008
PDX
  • 2. lipnja 2009
Upravo sam završio pisanje ovog programa za svoju java klasu. To je jednostavan program koji izračunava koliko košta postavljanje ograde. Na kraju se postavlja pitanje 'Želite li napraviti još jednu procjenu (Y/N)', a korisnik bi trebao odabrati da ili ne. Međutim, nakon što završim s pokretanjem, neću dobiti tu opciju, samo piše:

Izračunaj drugu procjenu (Y/N): iznimka u 'main' niti java.lang.StringIndexOutOfBoundsException: Indeks niza izvan raspona: 0
na java.lang.String.charAt (String.java:558)
na Test1.main(Test1.java:73)

Zašto to radi!!!

Evo usput programa:

Šifra: |_+_|

Littleodie914

9. lipnja 2004


Rochester, NY
  • 2. lipnja 2009
Vau, to je zeznuto. Učinio sam to tako što sam promijenio vaš zadnji 'read.nextLine()' u samo 'read.next()', ali pogledat ću malo bliže da vidim zašto ne radi na prvi način.

Uredi: Čini se da ima neke veze s metodom nextLine() koja prebacuje pokazivač izvan trenutnog retka. Ni sam to ne razumijem toliko, ali ovi linkovi bi mogli pomoći razjasniti malo zbrke:

API skener
Povezani post na forumu

HiRez

6. siječnja 2004
Zapadni SAD
  • 2. lipnja 2009
Pretpostavit ću da je jedan od tvojih prethodni pozivi za čitanje ostavljaju znak za novi red u međuspremniku za unos tipkovnice. Stoga, kada pozovete nextLine(), dobivate prazan niz, što dovodi do iznimke koja pokušava ispitati znak na poziciji 0, budući da ga nema. Ovo je također problem s mnogim funkcijama C ulaza na konzoli. Nekako vjerojatno želite prvo isprazniti međuspremnik lažnim pozivom za čitanje ili tako nečim. Ja nisam dugo koristio Javu pa ne znam koja bi točno bila ispravna procedura.

gnasher729

Obustavljeno
25. studenog 2005
  • 2. lipnja 2009
Chase R je rekao: Upravo sam završio pisanje ovog programa za svoju java klasu. To je jednostavan program koji izračunava koliko košta postavljanje ograde. Na kraju se postavlja pitanje 'Želite li napraviti još jednu procjenu (Y/N)', a korisnik bi trebao odabrati da ili ne. Međutim, nakon što završim s pokretanjem, neću dobiti tu opciju, samo piše:

Izračunaj drugu procjenu (Y/N): iznimka u 'main' niti java.lang.StringIndexOutOfBoundsException: Indeks niza izvan raspona: 0
na java.lang.String.charAt (String.java:558)
na Test1.main(Test1.java:73)

Zašto to radi!!!

Budući da imate izvorni kod, vjerojatno u uređivaču programa koji se može napraviti da prikazuje brojeve redaka, trebali biste moći pronaći gdje se nalazi redak 73 u datoteci Test1.main. To će vam pokazati gdje se problem događa.

Sada imate iznimku koja kaže da je indeks 0 'izvan raspona'. Ako pristupate nizu s n znakova, koji su to važeći indeksi?

Možete li nam sada reći u kojoj točno situaciji indeks 0 nije valjan?

To bi trebalo dati odgovor na vaše pitanje.

SilentPanda

Moderator emeritus
8. listopada 2002
Bambusova šuma
  • 2. lipnja 2009
gnasher729 je rekao: Budući da imate izvorni kod, vjerojatno u uređivaču programa koji se može napraviti da prikazuje brojeve redaka, trebali biste moći pronaći gdje se nalazi redak 73 u datoteci Test1.main. To će vam pokazati gdje se problem događa.

Linija je:

Šifra: |_+_|
odmah nakon što se prikaže 'Izračunaj drugu procjenu (Y/N):'