Foros del Web » Programación para mayores de 30 ;) » Java »

problema con "Exception in thread "main"..."

Estas en el tema de problema con "Exception in thread "main"..." en el foro de Java en Foros del Web. Hola chicos, soy nuevo en esto, de a poco he ido aprendiendo, pero estoy pegado con un pequeño problema y no se como solucionarlo. El ...
  #1 (permalink)  
Antiguo 16/06/2013, 12:00
 
Fecha de Ingreso: noviembre-2011
Mensajes: 119
Antigüedad: 5 años, 10 meses
Puntos: 0
problema con "Exception in thread "main"..."

Hola chicos, soy nuevo en esto, de a poco he ido aprendiendo, pero estoy pegado con un pequeño problema y no se como solucionarlo.

El error es este:
Cita:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at E09G3.main(E09G3.java:23)
Java Result: 1
y este es el codigo:

Código PHP:
import java.util.Scanner;

public class 
E09G3 {

    public static 
void main(String[] args) {
        
int xyresultado=0;
        
char letra;
        
        
Scanner scan = new Scanner(System.in);
        
        do{
            
System.out.println("Ingrese dos numeros:");
            
scan.nextInt();
            
scan.nextInt();
            
          do{
            
System.out.println("Seleccione la operacion a realizar:");
            
System.out.println("(S)umar");
            
System.out.println("(R)estar");
            
System.out.println("(M)ultiplicar");
            
System.out.println("(D)ividir");
            
letra scan.nextLine().toUpperCase().charAt(0);
            switch (
letra){
                case 
'S':
                    
resultado x+y;
                    break;
                case 
'R':
                    
resultado x-y;
                    break;
                case 
'M':
                    
resultado x*y;
                    break;
                case 
'D':
                    if (
y==0){
                        
System.out.println("No existe la divicion por cero");
                    }
                    
resultado x/y;
                default: 
                    
System.out.println("Ingrese la opcion correcta:");
            }
            }while (!(
letra == 'S' || letra == 'R' || letra == 'M' || letra == 'D'));
           
          
System.out.println("¿Desea realizar otra opracion?");
          
System.out.println("(S)i");
          
System.out.println("(N)o");
          
letra scan.nextLine().toUpperCase().charAt(0);
          
       }while (
letra=='S');
    }

muchas gracias por la ayuda a este principiante xD
  #2 (permalink)  
Antiguo 16/06/2013, 13:14
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 12 años, 6 meses
Puntos: 1360
Respuesta: problema con "Exception in thread "main"..."

Es por que nextInt() solo consume los números y no el \n del final de cadenada. Entonces cuando corres nextLine() te da una cadena vacía.

Hay varias formas de arreglar esto:
1. Leer solamente lineas y después convertirlo a int.
2. Revisar si el string esta vació entonces tomar una decisión predeterminada.
3. Agregar un nextLine() para consumir el \n

Ya que tengo algo de prisa te dejo la tercera opción.
Código Java:
Ver original
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         int x, y, resultado=0;
  7.         char letra;
  8.          
  9.         Scanner scan = new Scanner(System.in);
  10.  
  11.         do{
  12.             System.out.println("Ingrese dos numeros:");
  13.             x = scan.nextInt();
  14.             y = scan.nextInt();
  15.             scan.nextLine();
  16.              
  17.           do{
  18.             System.out.println("Seleccione la operacion a realizar:");
  19.             System.out.println("(S)umar");
  20.             System.out.println("(R)estar");
  21.             System.out.println("(M)ultiplicar");
  22.             System.out.println("(D)ividir");
  23.             letra = scan.nextLine().toUpperCase().charAt(0);
  24.             switch (letra){
  25.                 case 'S':
  26.                     resultado = x+y;
  27.                     break;
  28.                 case 'R':
  29.                     resultado = x-y;
  30.                     break;
  31.                 case 'M':
  32.                     resultado = x*y;
  33.                     break;
  34.                 case 'D':
  35.                     if (y==0){
  36.                         System.out.println("No existe la divicion por cero");
  37.                     }
  38.                     resultado = x/y;
  39.                 default:  
  40.                     System.out.println("Ingrese la opcion correcta:");
  41.             }
  42.             }while (!(letra == 'S' || letra == 'R' || letra == 'M' || letra == 'D'));
  43.            
  44.           System.out.println("¿Desea realizar otra opracion?");
  45.           System.out.println("(S)i");
  46.           System.out.println("(N)o");
  47.           letra = scan.nextLine().toUpperCase().charAt(0);
  48.            
  49.        }while (letra=='S');
  50.     }
  51. }

Etiquetas: exception, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.