Hola,
sobre esta parte del código:
if (letra == 'n' || letra == 'N') {
letra = 'n';
tecla = letra;
} else if (letra == 's' || letra == 'S') {
letra = 's';
tecla = letra;
}
Entiendo que quieres asegurarte de que la letra será minúscula para que funcione la condición del while.
Pero haces una redundancia:
letra = 'n';
tecla = letra;
Podrías simplificarlo escribiendo directamente:
tecla = 'n';
De hecho, no necesitas la variable letra pudiendo usar directamente la variable tecla:
char letra = cadena.charAt(0);
tecla = cadena.charAt(0);
if (tecla == 'n' || tecla == 'N') {
tecla = 'n';
} else if (tecla == 's' || tecla == 'S') {
tecla = 's';
}
Aún más, estos if para forzar que la letra introducida sea minúsucla, también te los puedes ahorrar.
Hay dos posibilidades para hacerlo:
1.- Modificar la condición del while para que acepte tanto 's' como 'S'
while(tecla == 's' || tecla == 'S');
2.-La más óptima,
usar el método toLowerCase() de la clase String.Tu primero usas una variable String para leer lo introducido por teclado, y luego extraes el primer caracter:
String cadena = entrada.getEntrada();
tecla = cadena.charAt(0);
Y luego usas código para asegurarte de obtener el carácter en minúsculas.
Pero puedes pedirle al
String cadena que directamente te pase a minúsculas el caracter que le pides usando este método:
String cadena = entrada.getEntrada();
tecla = cadena.toLowerCase().charAt(0);
De este modo luego no tienes que andar preocupándote de si el usuario ha escrito en mayúsculas o minúsculas haciendo IF ni nada. EL carácter que has pedido ya estará en minúsculas.
Si algún dia necesitases lo contrario, obtenerlo en mayúsculas, existe el metodo opuesto:
String cadena = entrada.getEntrada();
tecla = cadena.toUpperCase().charAt(0);
Estos métodos de la clase String son muy socorridos y puedes usarlos de muchas formas.
Si por ejemplo quisieras asegurarte de que ABSOLUTAMENTE TODO lo que introduce el usuario sea en minúsculas, puedes colocar el método directamente en tu clase 'EntradaPorTeclado':
package CU00903C;
import java.util.Scanner;
/**
* Para obtener entradas por teclado
*
* @author (Arnaldo Martinez)
* @version (01_2016)
*/
public class EntradaPorTeclado{
private String entradaTcl; //Campo de la clase
//Constructor
public EntradaPorTeclado(){
entradaTcl= "";
pedirEntrada(); //Llamado a un mètodo interno
}
//Mètodos de la clase
public void pedirEntrada(){
Scanner eEsc= new Scanner(System.in);
entradaTcl= eEsc.nextLine().toLowerCase();
}
public String getEntrada(){
return entradaTcl;
}
}