Kita

Mac 'Eilutės indeksas nepatenka į diapazoną: 0' ...Ar kas nors gali pasakyti, kas čia negerai? (Java)

Chase'as R

Originalus plakatas
2008 m. gegužės 8 d
PDX
  • 2009 m. birželio 2 d
Ką tik baigiau rašyti šią programą savo java klasei. Tai paprasta programa, kuri suskaičiuoja, kiek kainuoja įrengti tvorą. Pabaigoje klausiama „ar norėtumėte atlikti kitą įvertinimą (Y/N)“, o vartotojas turėtų pasirinkti „taip“ arba „ne“. Tačiau, kai baigsiu paleisti savo, šios parinkties negausiu, ji tiesiog sako:

Apskaičiuoti kitą įvertinimą (Y/N): išimtis gijoje „main“ java.lang.StringIndexOutOfBoundsException: eilutės indeksas už diapazono: 0
adresu java.lang.String.charAt (String.java:558)
adresu Test1.main (Test1.java:73)

Kodėl tai daro!!!

Čia, beje, programa:

Kodas: |_+_|

Littleodie914

2004 m. birželio 9 d


Ročesteris, NY
  • 2009 m. birželio 2 d
Oho, tai sudėtinga. Pakeitiau paskutinę „read.nextLine()“ į „read.next()“, bet pažiūrėsiu šiek tiek atidžiau, kad pamatyčiau, kodėl tai neveikia iš pradžių.

Redaguoti: Atrodo, kad tai susiję su nextLine() metodu, perkeliančiu žymeklį už dabartinės eilutės. Aš pats to nelabai suprantu, bet šios nuorodos gali padėti išsiaiškinti painiavą:

API skaitytuvas
Susijęs forumo įrašas

HiRez

2004 m. sausio 6 d
Vakarų JAV
  • 2009 m. birželio 2 d
Spėsiu, kad tai vienas iš tavo ankstesnis Skaityti skambučiai palieka naujos eilutės simbolį klaviatūros įvesties buferyje. Todėl, kai iškviečiate nextLine(), gaunate tuščią eilutę, dėl kurios atsiranda išimtis, bandanti ištirti simbolį 0 padėtyje, nes tokio nėra. Tai taip pat yra daugelio konsolės C įvesties funkcijų problema. Kažkaip tikriausiai norite pirmiausia nuplauti buferį su fiktyvaus skaitymo iškvietimu ar pan. Jau seniai nenaudojau Java, todėl nežinau, kokia būtų teisinga procedūra.

gnasher729

Sustabdytas
2005 m. lapkričio 25 d
  • 2009 m. birželio 2 d
Chase R sakė: Aš ką tik baigiau rašyti šią programą savo java klasei. Tai paprasta programa, kuri suskaičiuoja, kiek kainuoja įrengti tvorą. Pabaigoje klausiama „ar norėtumėte atlikti kitą įvertinimą (Y/N)“, o vartotojas turėtų pasirinkti „taip“ arba „ne“. Tačiau, kai baigsiu paleisti savo, šios parinkties negausiu, ji tiesiog sako:

Apskaičiuoti kitą įvertinimą (Y/N): išimtis gijoje „main“ java.lang.StringIndexOutOfBoundsException: eilutės indeksas už diapazono: 0
adresu java.lang.String.charAt (String.java:558)
adresu Test1.main (Test1.java:73)

Kodėl tai daro!!!

Kadangi turite šaltinio kodą, tikriausiai programos rengyklėje, kuri gali rodyti eilučių numerius, turėtumėte rasti, kur yra 73 eilutė faile Test1.main. Tai parodys, kur iškyla problema.

Dabar turite išimtį, kuri sako, kad indeksas 0 yra „ne diapazone“. Jei pasiekiate eilutę su n simbolių, kokie yra galiojantys indeksai?

Ar galite tiksliai pasakyti, kokioje situacijoje indeksas 0 nėra tinkamas indeksas?

Tai turėtų atsakyti į jūsų klausimą.

SilentPanda

Moderatorius emeritas
2002 m. spalio 8 d
Bambukų miškas
  • 2009 m. birželio 2 d
gnasher729 pasakė: Kadangi turite šaltinio kodą, tikriausiai programos redaktoriuje, kuris gali būti pritaikytas rodyti eilučių numerius, turėtumėte rasti, kur yra 73 eilutė faile Test1.main. Tai parodys, kur iškyla problema.

Linija yra:

Kodas: |_+_|
iškart po to, kai rodoma „Apskaičiuoti kitą įvertinimą (Y/N):“