Altro

Mac 'String index out of range: 0' ...Qualcuno può dirmi cosa c'è che non va? (Giava)

Insegui R

Manifesto originale
8 maggio 2008
PDX
  • 2 giugno 2009
Ho appena finito di scrivere questo programma per la mia classe java. È un semplice programma che calcola quanto costa installare una recinzione. Alla fine, chiede 'vuoi fare un'altra stima (S/N)' e l'utente dovrebbe scegliere sì o no. Tuttavia, dopo aver finito di eseguire il mio, non avrò questa opzione, dice solo:

Calcola un'altra stima (S/N): Eccezione nel thread 'main' java.lang.StringIndexOutOfBoundsException: Indice stringa fuori intervallo: 0
su java.lang.String.charAt (String.java:558)
su Test1.main(Test1.java:73)

Perché lo fa!!!

Ecco a proposito il programma:

Codice: |_+_|

Littleodie914

9 giugno 2004


Rochester, NY
  • 2 giugno 2009
Wow, è complicato. L'ho fatto funzionare cambiando il tuo ultimo 'read.nextLine()' in solo 'read.next()', ma guarderò un po' più da vicino per vedere perché non funziona nel primo modo.

Modificare: Sembra avere qualcosa a che fare con il metodo nextLine() che fa avanzare il puntatore oltre la riga corrente. Non lo capisco molto da solo, ma questi link potrebbero aiutare a chiarire un po' di confusione:

Scanner API
Post del forum correlato

HiRez

6 gennaio 2004
Stati Uniti occidentali
  • 2 giugno 2009
Immagino che uno dei tuoi precedente le chiamate di lettura lasciano il carattere di nuova riga nel buffer di input della tastiera. Pertanto, quando chiami nextLine(), ottieni una stringa vuota, che porta all'eccezione che tenta di esaminare il carattere nella posizione 0, poiché non ce n'è nessuno. Questo è anche un problema con molte delle funzioni di input C della console. In qualche modo probabilmente vorrai prima svuotare il buffer con una chiamata di lettura fittizia o qualcosa del genere. Non uso Java da molto tempo, quindi non so quale sarebbe esattamente la procedura giusta.

gnasher729

Sospeso
25 novembre 2005
  • 2 giugno 2009
Chase R ha detto: ho appena finito di scrivere questo programma per la mia classe java. È un semplice programma che calcola quanto costa installare una recinzione. Alla fine, chiede 'vuoi fare un'altra stima (S/N)' e l'utente dovrebbe scegliere sì o no. Tuttavia, dopo aver finito di eseguire il mio, non avrò questa opzione, dice solo:

Calcola un'altra stima (S/N): Eccezione nel thread 'main' java.lang.StringIndexOutOfBoundsException: Indice stringa fuori intervallo: 0
su java.lang.String.charAt (String.java:558)
su Test1.main(Test1.java:73)

Perché lo fa!!!

Dato che hai il codice sorgente, probabilmente in un editor di programma che può essere fatto per visualizzare i numeri di riga, dovresti essere in grado di trovare dove si trova la riga 73 nel file Test1.main. Questo ti mostrerà dove si verifica il problema.

Ora hai un'eccezione che dice che un indice di 0 è 'fuori intervallo'. Se accedi a una stringa con n caratteri, quali sono gli indici validi?

Ora puoi dirci esattamente in quale situazione l'indice 0 non è un indice valido?

Questo dovrebbe rispondere alla tua domanda.

SilentPanda

Moderatore emerito
8 ottobre 2002
La foresta di bambù
  • 2 giugno 2009
gnasher729 ha detto: Poiché hai il codice sorgente, probabilmente in un editor di programma che può essere fatto per visualizzare i numeri di riga, dovresti essere in grado di trovare dove si trova la riga 73 nel file Test1.main. Questo ti mostrerà dove si verifica il problema.

La linea è:

Codice: |_+_|
subito dopo che viene visualizzato 'Calcola un'altra stima (S/N):'