Chase R
Poster original- 8 de mayo de 2008
- PDX
- 2 de junio de 2009
Calcular otra estimación (Y / N): excepción en el hilo 'principal' java.lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango: 0
en java.lang.String.charAt (String.java:558)
en Test1.main (Test1.java:73)
¿Por qué está haciendo esto?
Por cierto, aquí está el programa:
Código:
public class Test1 { public static void main( String[] args ) { String customer = ' '; String customerUC = ' '; String type1 = ' '; String type2 = ' '; char type = ' '; String another1 = ' '; char another = 'y'; int fence = 0; int count = 0; double costFoot = 0; double costTotal = 0; double costGrand = 0; Scanner read = new Scanner(System.in); System.out.print( '
----------SIERRA FENCING COMPANY----------' ); while ( Character.toUpperCase(another) == 'Y' ) { System.out.print( '
Your Name: ' ); customer = read.nextLine(); customerUC = customer.toUpperCase(); System.out.print( '
New Installation (N) or Repair (R): ' ); type1 = read.nextLine(); type2 = type1.toUpperCase(); type = type2.charAt(0); System.out.print( '
Amount of Fencing Needed (linear feet): ' ); fence = read.nextInt(); System.out.print( '
Cost-Per-Foot of Fencing: ' ); costFoot = read.nextDouble(); if ( costFoot > 6 && type == 'N' ) { costFoot = 6; } else if ( costFoot > 5 && type == 'R' ) { costFoot = 5; } costTotal = fence * costFoot; costGrand += costTotal; count++; System.out.print( '
-------------------------------------------------------' ); System.out.print( '
Name: ' + customerUC ); System.out.print( '
Type: ' + type ); System.out.print( '
Linear Fencing: ' + fence + ' feet' ); System.out.print( '
Cost-Per-Foot: $' + costFoot ); System.out.print( '
Total: $' + costTotal ); System.out.print( '
-------------------------------------------------------' ); System.out.print( '
Calculate Another Estimate (Y/N): ' ); another1 = read.nextLine(); another = another1.charAt(0); } System.out.print( '
Grand Total: $' + costGrand ); System.out.print( '
You made ' + count + ' estimates' ); } }
Littleodie914
- 9 de junio de 2004
- Rochester, Nueva York
- 2 de junio de 2009
Editar: Parece tener algo que ver con el método nextLine () que hace avanzar el puntero más allá de la línea actual. Yo no lo entiendo mucho, pero estos enlaces pueden ayudar a aclarar un poco la confusión:
Escáner de API
Publicación relacionada en el foro
HiRez
- 6 de enero de 2004
- Oeste de EE. UU.
- 2 de junio de 2009
gnasher729
Suspendido
- 25 de noviembre de 2005
- 2 de junio de 2009
Chase R dijo: Acabo de terminar de escribir este programa para mi clase de Java. Es un programa simple que calcula cuánto cuesta instalar una cerca. Al final, pregunta '¿le gustaría hacer otra estimación (Y / N)?', Y se supone que el usuario debe elegir sí o no. Sin embargo, después de que termine de ejecutar el mío, no obtendré esa opción, solo dice:
Calcular otra estimación (Y / N): excepción en el hilo 'principal' java.lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango: 0
en java.lang.String.charAt (String.java:558)
en Test1.main (Test1.java:73)
¿Por qué está haciendo esto?
Dado que tiene el código fuente, probablemente en un editor de programa que pueda hacer que muestre números de línea, debería poder encontrar dónde está la línea 73 en el archivo Test1.main. Eso le mostrará dónde ocurre el problema.
Ahora tiene una excepción que dice que un índice de 0 está 'fuera de rango'. Si accede a una cadena con n caracteres, ¿cuáles son los índices válidos?
Ahora, ¿puede decirnos exactamente en qué situación el índice 0 no es un índice válido?
Eso debería responder a tu pregunta.
SilentPanda
Moderador emérito
- Oct 8, 2002
- El bosque de bambú
- 2 de junio de 2009
gnasher729 dijo: Ya que tiene el código fuente, probablemente en un editor de programa que pueda mostrar números de línea, debería poder encontrar la línea 73 en el archivo Test1.main. Eso le mostrará dónde ocurre el problema.
La linea es:
Código:
another1 = read.nextLine();
justo después de que muestra 'Calcular otra estimación (Y / N):'
Entradas Populares