Muud

Mac 'Stringindeks vahemikust väljas: 0' ...Kas keegi oskab öelda, mis siin valesti on? (Java)

Chase R

Originaalplakat
8. mai 2008
PDX
  • 2. juuni 2009
Lõpetasin just selle programmi oma java klassi jaoks kirjutamise. See on lihtne programm, mis arvutab välja, kui palju aia paigaldamine maksab. Lõpus küsib see 'kas soovite teha veel ühe hinnangu (Y/N)' ja kasutaja peab valima jah või ei. Kuid pärast seda, kui ma olen oma oma käivitamise lõpetanud, ma seda valikut ei saa, see ütleb lihtsalt:

Teise hinnangu arvutamine (Y/N): erand lõimes 'main' java.lang.StringIndexOutOfBoundsException: stringindeks vahemikust väljas: 0
aadressil java.lang.String.charAt (String.java:558)
aadressil Test1.main(Test1.java:73)

Miks ta seda teeb!!!

Siin on programm muide:

Kood: |_+_|

Littleodie914

9. juuni 2004


Rochester, NY
  • 2. juuni 2009
Vau, see on keeruline. Sain selle tööle, muutes teie viimase 'read.nextLine()' väärtuseks lihtsalt 'read.next()', kuid ma vaatan veidi lähemalt, et näha, miks see esimesel viisil ei tööta.

Redigeeri: Tundub, et sellel on midagi pistmist meetodiga nextLine(), mis viib kursori praegusest reast kaugemale. Ma ise sellest nii palju aru ei saa, kuid need lingid võivad aidata natuke segadust lahendada:

API skanner
Seotud foorumi postitus

HiRez

6. jaanuar 2004
USA lääneosa
  • 2. juuni 2009
Ma arvan, et see on üks sinu omadest eelmine lugemiskõned jätavad reavahetusmärgi klaviatuuri sisestuspuhvrisse. Seega, kui helistate nextLine(), saate tühja stringi, mis viib erandini, mis püüab uurida positsioonis 0 olevat märki, kuna seda pole. See on probleem ka paljude konsooli sisendi C funktsioonide puhul. Kuidagi tahad ilmselt esmalt puhvrit tühjaks teha näiva lugemise või muuga. Ma pole Java pikka aega kasutanud, nii et ma ei tea, milline oleks täpselt õige protseduur.

gnasher729

Peatatud
25. november 2005
  • 2. juuni 2009
Chase R ütles: Lõpetasin just selle programmi oma Java-klassi jaoks kirjutamise. See on lihtne programm, mis arvutab välja, kui palju aia paigaldamine maksab. Lõpus küsib see 'kas soovite teha veel ühe hinnangu (Y/N)' ja kasutaja peab valima jah või ei. Kuid pärast seda, kui ma olen oma oma käivitamise lõpetanud, ma seda valikut ei saa, see ütleb lihtsalt:

Teise hinnangu arvutamine (Y/N): erand lõimes 'main' java.lang.StringIndexOutOfBoundsException: stringindeks vahemikust väljas: 0
aadressil java.lang.String.charAt (String.java:558)
aadressil Test1.main(Test1.java:73)

Miks ta seda teeb!!!

Kuna sul on lähtekood olemas, ilmselt mõnes programmiredaktoris, mille saab panna reanumbreid kuvama, peaksid failis Test1.main leidma, kus asub rida 73. See näitab teile, kus probleem ilmneb.

Nüüd on teil erand, mis ütleb, et indeks 0 on vahemikust väljas. Kui pääsete juurde n tähemärgiga stringile, siis millised on kehtivad indeksid?

Kas saate nüüd täpselt öelda, millises olukorras indeks 0 ei kehti?

See peaks teie küsimusele vastama.

SilentPanda

Moderaator emeriit
8. oktoober 2002
Bambuse mets
  • 2. juuni 2009
gnasher729 ütles: Kuna teil on lähtekood, tõenäoliselt mõnes programmiredaktoris, mida saab panna reanumbreid kuvama, peaksite leidma, kus asub failis Test1.main rida 73. See näitab teile, kus probleem ilmneb.

Rida on:

Kood: |_+_|
kohe pärast seda, kui kuvatakse teade 'Arvuta teine ​​hinnang (Y/N):'