Alte

Mac „Index de șir în afara intervalului: 0” ...Îmi poate spune cineva ce este în neregulă aici? (Java)

Chase R

Poster original
8 mai 2008
PDX
  • 2 iunie 2009
Tocmai am terminat de scris acest program pentru clasa mea de java. Este un program simplu care calculează cât costă instalarea unui gard. La sfârșit, se întreabă „doriți să faceți o altă estimare (Y/N)”, iar utilizatorul ar trebui să aleagă da sau nu. Cu toate acestea, după ce am terminat de rulat al meu, nu voi primi acea opțiune, doar spune:

Calculați o altă estimare (Y/N): Excepție în firul „principal” java.lang.StringIndexOutOfBoundsException: Index de șir în afara intervalului: 0
la java.lang.String.charAt (String.java:558)
la Test1.main(Test1.java:73)

De ce face asta!!!

Iată programul de altfel:

Cod: |_+_|

Littleodie914

9 iunie 2004


Rochester, NY
  • 2 iunie 2009
Wow, e complicat. Am făcut-o să funcționeze schimbând ultimul tău „read.nextLine()” cu doar „read.next()”, dar mă voi uita puțin mai atent pentru a vedea de ce nu funcționează în primul rând.

Editați | ×: Se pare că are ceva de-a face cu metoda nextLine() care avansează indicatorul dincolo de linia curentă. Eu nu înțeleg prea mult, dar aceste link-uri ar putea ajuta la lămurirea unei confuzii:

Scaner API
Postare asociată pe forum

HiRez

6 ianuarie 2004
Vestul SUA
  • 2 iunie 2009
O să ghicesc că unul dintre dumneavoastră anterior apelurile de citire lasă caracterul de nouă linie în tamponul de introducere a tastaturii. Prin urmare, atunci când apelați nextLine(), obțineți un șir gol, ceea ce duce la excepția care încearcă să examineze caracterul de la poziția 0, deoarece nu există niciunul. Aceasta este, de asemenea, o problemă cu multe dintre funcțiile de intrare C din consolă. Cumva, probabil că doriți să spălați mai întâi tamponul cu un apel de citire fals sau ceva de genul. Nu am mai folosit Java de mult timp, așa că nu știu exact care ar fi procedura corectă.

gnasher729

Suspendat
25 noiembrie 2005
  • 2 iunie 2009
Chase R a spus: Tocmai am terminat de scris acest program pentru clasa mea de java. Este un program simplu care calculează cât costă instalarea unui gard. La sfârșit, se întreabă „doriți să faceți o altă estimare (Y/N)”, iar utilizatorul ar trebui să aleagă da sau nu. Cu toate acestea, după ce am terminat de rulat al meu, nu voi primi acea opțiune, doar spune:

Calculați o altă estimare (Y/N): Excepție în firul „principal” java.lang.StringIndexOutOfBoundsException: Index de șir în afara intervalului: 0
la java.lang.String.charAt (String.java:558)
la Test1.main(Test1.java:73)

De ce face asta!!!

Deoarece aveți codul sursă, probabil într-un editor de programe care poate fi făcut să afișeze numere de rând, ar trebui să puteți găsi unde se află linia 73 din fișierul Test1.main. Asta vă va arăta unde se întâmplă problema.

Acum aveți o excepție care spune că un indice de 0 este „în afara intervalului”. Dacă accesați un șir cu n caractere, care sunt indicii validi?

Acum ne puteți spune exact în ce situație indicele 0 nu este un indice valid?

Asta ar trebui să răspundă la întrebarea ta.

SilentPanda

Moderator emerit
8 octombrie 2002
Pădurea de bambus
  • 2 iunie 2009
gnasher729 a spus: Deoarece aveți codul sursă, probabil într-un editor de program care poate fi făcut să afișeze numere de rând, ar trebui să puteți găsi unde se află linia 73 din fișierul Test1.main. Asta vă va arăta unde se întâmplă problema.

Linia este:

Cod: |_+_|
imediat după ce se afișează „Calculați o altă estimare (Y/N):”