Error en lectura de datos con String y Int

Iniciado por Chentul, 4 Mayo 2014, 07:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Chentul

Hola a todos !!!
Espero y no agobiarlos un este programa tontillo pero no encuentro solución alguna se trata de una simple lectura de datos, anexo el código:

        String[] materia = new String[3];
        int[] calp = new int [9];
       
        Scanner scan = new Scanner(System.in);
       
        System.out.print("Nombre de la materia I: ");materia[0] = scan.nextLine();
        System.out.print(materia[0]+" ,Parcial I: ");calp[0] = scan.nextInt();
        System.out.print(materia[0]+" ,Parcial II: ");calp[1] = scan.nextInt();
        System.out.print(materia[0]+" ,Parcial III: ");calp[2] = scan.nextInt();
       
        System.out.print("Nombre de la materia II: ");materia[1] = scan.nextLine();
        System.out.print(materia[1]+" ,Parcial I: ");calp[3] = scan.nextInt();
        System.out.print(materia[1]+" ,Parcial II: ");calp[4] = scan.nextInt();
        System.out.print(materia[1]+" ,Parcial III: ");calp[5] = scan.nextInt();
       
        System.out.print("Nombre de la materia III: ");materia[2] = scan.nextLine();
        System.out.print(materia[2]+" ,Parcial I: ");calp[6] = scan.nextInt();
        System.out.print(materia[2]+" ,Parcial II: ");calp[7] = scan.nextInt();
        System.out.print(materia[2]+" ,Parcial III: ");calp[8] = scan.nextInt();
       
        for(int i=0;i<3;i++){System.out.println(materia[i]+" "+calp[i]);}


El algoritmo trata de pedir 3 nombres de materias con sus respectivas calificaciones y imprimirlas en la pantalla, pero, el problema que estoy teniendo, esta, en que al momento de pedir el nombre de la materia II se encima junto con la calificación de del primer parcial y se crashea el programa y no termina.

Una solución que tuve a esto fue primero pedir los primeros 3 nombres de las materias y después empezar a pedir las calificaciones de sus respectivas materias pero no me convence el programa así :S

Gracias por su apoyo y espero y no agobiarles saludos :D

Zoik

Puedes usar la clase StringTokenizer haciendo algo asi:

Código (java) [Seleccionar]
StringTokenizer st = new StringTokenizer("Matematicas|8|9|7","|");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }


Un saludo.