contar letras con switch
Publicado por Gloria López (1 intervención) el 30/11/2021 15:51:32
Estoy aprendiendo programación y estoy realizando una actividad con la que tengo dudas. A ver si alguien me puede explicar en qué fallo por favor.
La actividad consiste en escribir un programa en el que se solicite al usuario un texto de al menos cinco caracteres de longitud. Si no contiene al menos cinco caracteres se le volverá a pedir hasta que cumpla con el requisito.
Cuando cumpla el primer requisito, se solicitará un número entero que servirá como "multiplicador", y que debe estar obligatoriamente entre 1 y 3. De nuevo, si se introduce cualquier otro valor que no se encuentre en ese rango, habrá que volver a solicitarlo hasta que lo cumpla.
Una vez que se disponga del texto y el multiplicador, se procederá al cálculo de la puntuación inicial del texto, teniendo en cuenta las siguientes reglas:
cada vocal, tanto si es minúscula como mayúscula, valdrá un punto;
las letras x, y, z (minúsculas), valdrán dos puntos;
la letra X (mayúscula), valdrá cinco puntos;
cualquier otro carácter (tanto si es letra como si es otra cosa), restará un punto.
Una vez obtenida esa puntuación inicial, deberás multiplicarla por el valor "multiplicador" para calcular la puntuación final.
Para ello, os dejo el código que yo he formulado. Tengo que ir trabajando caracter a caracter con texto.charAt(), pero me da error porque String no puede coinvertirse en char.
public static void main(String[] args) {
//----------------------------------------------
// Declaración de variables
//----------------------------------------------
// Constantes
// Variables de entrada
String texto;
int multiplicador = 0;
int index;
int a = 0, e = 0, i = 0, o = 0, u = 0, A = 0, E = 0, I = 0, O = 0, U = 0, X = 0, x = 0, y = 0, z = 0, r=0;
// Variables de salida
int vocales, consonantes, mayuscula, restante;
// Variables auxiliares
boolean entradaValida1=false, entradaValida2=false;
// Clase Scanner para petición de datos
Scanner teclado = new Scanner(System.in);
//----------------------------------------------
// Entrada de datos
//----------------------------------------------
System.out.println("VALOR DE UN TEXTO");
System.out.println("------------------");
do {
System.out.println("Introduzca un texto con al menos 5 caracteres: ");
texto=teclado.nextLine();
if (texto.length() >=5) { //Si el texto tiene más de 5 caracteres, la entrada es válida y se pide el siguiente dato (multiplicador).
entradaValida1= true;
do {
System.out.println("Introduzca el valor del multiplicador (entre 1-3): ");
multiplicador=teclado.nextInt();
if (multiplicador>=1 && multiplicador<=3) {
entradaValida2=true;
}
}while (!entradaValida2);
}
}while (!entradaValida1);
//----------------------------------------------
// Procesamiento
//----------------------------------------------
for (index=0; index<texto.length(); index++){
switch (texto.charAt(index)) {
case "a": case "e": case "i": case "o": case "u": case "A": case "E": case "I": case "O": case "U": //Conteo de vocales maúsculas y minúculas
a++; e++; i++; o++; u++; A++; E++; I++; O++; U++;
break;
case "x": case "y": case "z": //Conteo de las letras x, y, y z que aparece en el texto.
x++; y++; z++;
break;
case "X": //Conteo de la letra X que hay en el texto.
X++;
break;
default: //Conteo de restos de caracteres que hay en el texto.
r++;
break;
}
}
//Calculo del total de puntos que hay de cada caracter en el texto.
vocales= (a + e + i + o + u + A + E + I + O + U);
consonantes= (x + y + z) * 2;
mayuscula= X * 5;
restante= r;
//----------------------------------------------
// Salida de resultados
//----------------------------------------------
System.out.println();
System.out.println("RESULTADO");
System.out.println("---------");
System.out.println("El valor del texto es " + ((vocales+consonantes+mayuscula)-restante)*multiplicador + "."); //Se suma los puntos y multiplicar por el multiplicador que el usuario introduce.
}
}
La actividad consiste en escribir un programa en el que se solicite al usuario un texto de al menos cinco caracteres de longitud. Si no contiene al menos cinco caracteres se le volverá a pedir hasta que cumpla con el requisito.
Cuando cumpla el primer requisito, se solicitará un número entero que servirá como "multiplicador", y que debe estar obligatoriamente entre 1 y 3. De nuevo, si se introduce cualquier otro valor que no se encuentre en ese rango, habrá que volver a solicitarlo hasta que lo cumpla.
Una vez que se disponga del texto y el multiplicador, se procederá al cálculo de la puntuación inicial del texto, teniendo en cuenta las siguientes reglas:
cada vocal, tanto si es minúscula como mayúscula, valdrá un punto;
las letras x, y, z (minúsculas), valdrán dos puntos;
la letra X (mayúscula), valdrá cinco puntos;
cualquier otro carácter (tanto si es letra como si es otra cosa), restará un punto.
Una vez obtenida esa puntuación inicial, deberás multiplicarla por el valor "multiplicador" para calcular la puntuación final.
Para ello, os dejo el código que yo he formulado. Tengo que ir trabajando caracter a caracter con texto.charAt(), pero me da error porque String no puede coinvertirse en char.
public static void main(String[] args) {
//----------------------------------------------
// Declaración de variables
//----------------------------------------------
// Constantes
// Variables de entrada
String texto;
int multiplicador = 0;
int index;
int a = 0, e = 0, i = 0, o = 0, u = 0, A = 0, E = 0, I = 0, O = 0, U = 0, X = 0, x = 0, y = 0, z = 0, r=0;
// Variables de salida
int vocales, consonantes, mayuscula, restante;
// Variables auxiliares
boolean entradaValida1=false, entradaValida2=false;
// Clase Scanner para petición de datos
Scanner teclado = new Scanner(System.in);
//----------------------------------------------
// Entrada de datos
//----------------------------------------------
System.out.println("VALOR DE UN TEXTO");
System.out.println("------------------");
do {
System.out.println("Introduzca un texto con al menos 5 caracteres: ");
texto=teclado.nextLine();
if (texto.length() >=5) { //Si el texto tiene más de 5 caracteres, la entrada es válida y se pide el siguiente dato (multiplicador).
entradaValida1= true;
do {
System.out.println("Introduzca el valor del multiplicador (entre 1-3): ");
multiplicador=teclado.nextInt();
if (multiplicador>=1 && multiplicador<=3) {
entradaValida2=true;
}
}while (!entradaValida2);
}
}while (!entradaValida1);
//----------------------------------------------
// Procesamiento
//----------------------------------------------
for (index=0; index<texto.length(); index++){
switch (texto.charAt(index)) {
case "a": case "e": case "i": case "o": case "u": case "A": case "E": case "I": case "O": case "U": //Conteo de vocales maúsculas y minúculas
a++; e++; i++; o++; u++; A++; E++; I++; O++; U++;
break;
case "x": case "y": case "z": //Conteo de las letras x, y, y z que aparece en el texto.
x++; y++; z++;
break;
case "X": //Conteo de la letra X que hay en el texto.
X++;
break;
default: //Conteo de restos de caracteres que hay en el texto.
r++;
break;
}
}
//Calculo del total de puntos que hay de cada caracter en el texto.
vocales= (a + e + i + o + u + A + E + I + O + U);
consonantes= (x + y + z) * 2;
mayuscula= X * 5;
restante= r;
//----------------------------------------------
// Salida de resultados
//----------------------------------------------
System.out.println();
System.out.println("RESULTADO");
System.out.println("---------");
System.out.println("El valor del texto es " + ((vocales+consonantes+mayuscula)-restante)*multiplicador + "."); //Se suma los puntos y multiplicar por el multiplicador que el usuario introduce.
}
}
Valora esta pregunta


0