Altres

Mac 'Índex de cadenes fora de rang: 0' ...Algú em pot dir què passa aquí? (Java)

Chase R

Cartell original
8 de maig de 2008
PDX
  • 2 de juny de 2009
Acabo d'escriure aquest programa per a la meva classe de Java. És un programa senzill que calcula quant costa instal·lar una tanca. Al final, es pregunta 'vols fer una altra estimació (S/N)' i se suposa que l'usuari ha de triar sí o no. Tanmateix, un cop hagi acabat d'executar la meva, no obtindré aquesta opció, només diu:

Calcula una altra estimació (S/N): excepció al fil 'principal' java.lang.StringIndexOutOfBoundsException: índex de cadena fora de l'interval: 0
a java.lang.String.charAt (String.java:558)
a Test1.main(Test1.java:73)

Per què fa això!!!

Per cert, aquí teniu el programa:

Codi: |_+_|

Littleodie914

9 de juny de 2004


Rochester, Nova York
  • 2 de juny de 2009
Vaja, això és complicat. Ho vaig fer funcionar canviant el vostre darrer 'read.nextLine()' per només 'read.next()', però miraré una mica més de prop per veure per què no funciona de la primera manera.

Edita: Sembla que té alguna cosa a veure amb el mètode nextLine() que avança el punter més enllà de la línia actual. Jo mateix no ho entenc gaire, però aquests enllaços poden ajudar a aclarir una mica de confusió:

Escàner API
Publicació relacionada amb el fòrum

HiRez

6 de gener de 2004
Oest dels EUA
  • 2 de juny de 2009
Vaig a endevinar que un dels teus anterior les trucades de lectura deixen el caràcter de nova línia a la memòria intermèdia d'entrada del teclat. Per tant, quan truqueu nextLine(), obtindreu una cadena buida, que condueix a l'excepció que intenta examinar el caràcter a la posició 0, ja que no n'hi ha cap. Això també és un problema amb moltes de les funcions C d'entrada de la consola. D'alguna manera, probablement voleu esborrar la memòria intermèdia primer amb una trucada de lectura ficticia o alguna cosa així. Fa temps que no utilitzo Java, així que no sé quin seria exactament el procediment correcte.

gnasher729

Suspès
25 de novembre de 2005
  • 2 de juny de 2009
Chase R va dir: Acabo d'escriure aquest programa per a la meva classe de Java. És un programa senzill que calcula quant costa instal·lar una tanca. Al final, es pregunta 'vols fer una altra estimació (S/N)' i se suposa que l'usuari ha de triar sí o no. Tanmateix, un cop hagi acabat d'executar la meva, no obtindré aquesta opció, només diu:

Calcula una altra estimació (S/N): excepció al fil 'principal' java.lang.StringIndexOutOfBoundsException: índex de cadena fora de l'interval: 0
a java.lang.String.charAt (String.java:558)
a Test1.main(Test1.java:73)

Per què fa això!!!

Com que teniu el codi font, probablement en un editor de programes que es pugui fer per mostrar números de línia, hauríeu de poder trobar on es troba la línia 73 del fitxer Test1.main. Això us mostrarà on passa el problema.

Ara teniu una excepció que diu que un índex de 0 està 'fora de l'interval'. Si accediu a una cadena amb n caràcters, quins són els índexs vàlids?

Ara ens pots dir exactament en quina situació l'índex 0 no és un índex vàlid?

Això hauria de respondre a la teva pregunta.

SilentPanda

Moderador emèrit
Oct 8, 2002
El bosc de bambú
  • 2 de juny de 2009
gnasher729 va dir: Com que teniu el codi font, probablement en un editor de programes que es pugui fer per mostrar números de línia, hauríeu de poder trobar on es troba la línia 73 del fitxer Test1.main. Això us mostrarà on passa el problema.

La línia és:

Codi: |_+_|
just després de mostrar 'Calcula una altra estimació (S/N):'