elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:33  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Me salta una captura [Ayuda]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Me salta una captura [Ayuda]  (Leído 456 veces)
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Me salta una captura [Ayuda]
« en: 24 Noviembre 2011, 01:18 »

¿Por qué no funciona correctamente esto? :huh:
Me salta la captura de sName a partir de la segunda vuelta.
¿Soluciones a ser posible usando la clase Scanner?
Gracias.

Código
import java.util.*;
 
public class Hello1 {
   public static void main (String args[]) {
    Scanner Teclado= new Scanner(System.in);
    String sName = "", sRet= "";
    char cAsig;
 
    for (int x=0; x<131; x++ ){
    System.out.println("Introduce nombre del profesor:");
    sName= Teclado.nextLine();
 
           System.out.flush();
 
    do {
    System.out.println("Introduce el carácter correspondiente a su tipo de enseñanza:");
    cAsig= Teclado.next().charAt(0);
 
    switch (Character.toLowerCase(cAsig)){
    case 's': sRet="Secundaria"       ; break;
    case 'b': sRet="Bachiller"        ; break;
    case 'c': sRet="Ciclo Formativos" ; break;
    default :
    System.out.println("Error\nSolo se aceptan los caracteres 's', 'b' y 'c'\n");
    sRet="";
    }
    } while (sRet == "");
 
    System.out.println(sName + " es profesor de " + sRet + "\n");
    }
   }
}

DoEvents! :P


« Última modificación: 24 Noviembre 2011, 01:23 por Delerice » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Me salta una captura [Ayuda]
« Respuesta #1 en: 24 Noviembre 2011, 01:22 »

Era lo que habia mencionado en el otro post de usar Scanner.

Cada vez que lees debes poner esta linea para ignorar el retorno de caro:

Código
Teclado.skip("\n");

En el foro antes: http://foro.elhacker.net/empty-t337586.0.html
Saludos


« Última modificación: 24 Noviembre 2011, 01:43 por RyogiShiki » En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Me salta una captura [Ayuda]
« Respuesta #2 en: 24 Noviembre 2011, 01:53 »

Ok, gracias lo arreglé así:
Código:
import java.util.*;

public class Hello1 {
    public static void main (String args[]) {
    Scanner Teclado= new Scanner(System.in).useDelimiter("\n");
    String sName = "", sRet= "";
    char cAsig;
   
    for (int x=0; x<131; x++ ){
    System.out.println("Introduce nombre del profesor:");
    sName= Teclado.nextLine();
           
    do {
    System.out.println("Introduce el carácter correspondiente a su tipo de enseñanza:");
    cAsig= Teclado.next().charAt(0);
   
    switch (Character.toLowerCase(cAsig)){
    case 's': sRet="Secundaria"       ; break;
    case 'b': sRet="Bachiller"        ; break;
    case 'c': sRet="Ciclo Formativos" ; break;
    default :
    System.out.println("Error\nSolo se aceptan los caracteres 's', 'b' y 'c'\n");
    sRet="";
    }
    } while (sRet == "");
   
    System.out.println(sName + " es profesor de " + sRet + "\n");
    Teclado.skip("\n");
    }
    }
}
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Me salta una captura [Ayuda]
« Respuesta #3 en: 24 Noviembre 2011, 02:06 »

Eso es una buena opción, aunque si dejas vacío el dato de
Código
cAsig= Teclado.next().charAt(0);
más de una vez producirá un StringIndexOutOfBoundsException

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines