Java - Me ayudan con estos programas??

 
Vista:

Me ayudan con estos programas??

Publicado por Joaquin (4 intervenciones) el 04/05/2021 16:59:59
Me dejaron estos programas, soy malo programando, pero me interesa aprender, quisiera saber si me pueden ayudar con esto ya que urge, mi profa me dejo lo siguiente:

4.- Realizar un programa donde solicites al usuario un nombre de un Animal e imprima en pantalla cuántas vocales contiene dicho nombre del animal, tomando en consideración las vocales, minúsculas, mayúsculas y acentuaciones.


5.- Realizar un programa que solicite dos nombres e imprima en pantalla si son iguales o diferentes con ambos funciones la del equasl y compareTo, así como hacer una copia a otra variable.


6.- INSERTAR 10 NOMBRES EN UN ARREGLO E IMPRIMIRLOS EN PANTALLA LOS 10 NOMBRES.


7.- Se reutilizo el programa 6 añadiendo el método de la burbuja de ordenar de menor a mayor los nombres de la (A-Z) y el alumno lo concluirá añadiendo de mayor a menor (Z-A).


8.- Realizar un programa que por medio de un menú de opciones elija el usuario que desea insertar en un arreglo si números o nombres, y al elegir una opción dentro de ella habrá otro submenú de opciones para elegir el usuario si quiere ordenar de manera ASCENDENTE O DESCENDENTE, es para ambos opciones.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Me ayudan con estos programas??

Publicado por Billy Joel (875 intervenciones) el 05/05/2021 00:25:32
Con esto resuelves la 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public void vocales(String nombre) {
    char[] minusculas = {'a', 'e', 'i', 'o', 'u'};
    char[] mayusculas = {'A', 'E', 'I', 'O', 'U'};
    char[] minusculasTilde = {'á', 'é', 'í', 'ó', 'ú'};
    char[] mayusculasTilde = {'Á', 'É', 'Í', 'Ó', 'Ú'};
    int cMinusulas = 0;
    int cMayusculas = 0;
    int cMinusulasTildes = 0;
    int cMayusculasTildes = 0;
 
    for (char c : nombre.toCharArray()) {
        if (isIn(c, minusculas)) {
            cMinusulas++;
        } else if (isIn(c, mayusculas)) {
            cMayusculas++;
        } else if (isIn(c, minusculasTilde)) {
            cMinusulasTildes++;
        } else if (isIn(c, mayusculasTilde)) {
            cMayusculasTildes++;
        }
    }
 
    System.out.println(
            (cMinusulas > 0 ? "La palabra " + nombre + " tiene " + cMinusulas + " minusculas\n" : "")
            + (cMayusculas > 0 ? "La palabra " + nombre + " tiene " + cMayusculas + " mayusculas\n" : "")
            + (cMinusulasTildes > 0 ? "La palabra " + nombre + " tiene " + cMinusulasTildes + " minusculas con tilde\n" : "")
            + (cMayusculasTildes > 0 ? "La palabra " + nombre + " tiene " + cMayusculasTildes + " mayusculas con tilde" : "")
    );
}
 
private boolean isIn(char c, char[] a) {
    for (char cc : a) {
        if (c == cc) {
            return true;
        }
    }
    return false;
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Me ayudan con estos programas??

Publicado por Kabuto (1382 intervenciones) el 05/05/2021 00:37:23
A ver, ejercicio 4.

Tras pedir un nombre al usuario, con un bucle se puede recorrer cada carácter de ese nombre.
Y cada carácter puede ser evaluado por ejemplo con un switch, de manera que si encuentra una vocal, se incremente un contador.
Y luego al final indicamos el valor de este contador.

Por ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Ej4 {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Nombre de Animal: ");
		String nombre = teclado.nextLine();
 
		int cuentaVocales = 0;
		//Con un bucle, recorremos cada carácter del String
		for (int c = 0; c < nombre.length(); c++) {
			//Evaluamos cada carácter con un switch
			switch(nombre.charAt(c)) {
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u':
				cuentaVocales++;
			}
		}
 
		System.out.println("Vocales contadas: " + cuentaVocales);
		teclado.close();
	}
 
}

Antes de seguir leyendo, asegúrate de que entiendes cada línea del programa. Si algo no lo entiendes, pregúnta.

Si lo entiendes, seguimos.
Al probar este programa, parece funcionar bien:
1
2
Nombre de Animal: Drako
Vocales contadas: 2

Pero en realidad fallará si hay vocales mayúsculas y/o acentuadas:
1
2
Nombre de Animal: Argón
Vocales contadas: 0

Solucionemos primero lo de las mayúsculas.
Una solución evidente, es añadir más cases al switch, para que contemple las mayúsculas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int c = 0; c < nombre.length(); c++) {
			//Evaluamos cada carácter con un switch
			switch(nombre.charAt(c)) {
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u':
			case 'A':
			case 'E':
			case 'I':
			case 'O':
			case 'U':
				cuentaVocales++;
			}
		}

Y funcionaría. Y sería válido.
Pero nos lo podemos ahorrar de otra manera. Podemos hacer que el String que contiene el nombre, nos entregue todos los caracteres convertidos a minúsculas, así no importará como los haya escrito el usuario:
1
2
3
4
5
6
7
8
9
10
11
for (int c = 0; c < nombre.length(); c++) {
			//Evaluamos cada carácter con un switch
			switch(nombre.toLowerCase().charAt(c)) {
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u':
				cuentaVocales++;
			}
		}

Si lo probamos, vemos que ahora sí cuenta las mayúsculas:
1
2
Nombre de Animal: Argón
Vocales contadas: 1

Bien, ahora tocaría las vocales acentuadas. En esta ocasión, si que no queda otra que añadir más cases al switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int c = 0; c < nombre.length(); c++) {
			//Evaluamos cada carácter con un switch
			switch(nombre.toLowerCase().charAt(c)) {
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u':
			case 'á':
			case 'é':
			case 'í':
			case 'ó':
			case 'ú':
				cuentaVocales++;
			}
		}
Y ahora sí, se tiene en cuenta vocales de cualquier tipo:
1
2
Nombre de Animal: Argón
Vocales contadas: 2

De nuevo, asegúrate de que entiendes cada línea, cada instrucción y la lógica que se ha seguido.
Si tienes dudas, pregunta.

Si lo tienes claro, pues ahora vamos a ver una solución alternativa que requiere menos líneas.
Esta consiste en crear un String con todos los caracteres que queremos tener en cuenta a la hora de contar.
Y de nuevo usamos un bucle para recorrer el String con el nombre.
En esta ocasión, no vamos a extraer caracteres (tipo char). Vamos a extraer subcadenas (tipo String)

Cada subcadena será de tamaño 1, o sea, una única letra. Así que efectos prácticos va a ser lo mismo, iremos carácter a carácter.

Pero el tipo de dato, en lo que a Java le concierne, será distinto. Antes obteníamos letras contenidas en tipo char, con el método charAt()
Ahora vamos a obtener letras contenidas en clase String, usando el método substring()

Cada una de estas letras obtenidas, se la pasaremos al método contains() invocándolo desde el String que contiene las vocales que estamos buscandos.

Es decir, vamos a preguntar si la cadena String de vocales que buscamos, contiene alguna letra igual que la letra del nombre de animal que estamos evaluando en cada momento.
Si la respuesta es TRUE, entonces aumentamos el contador de vocales:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Ej4 {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Nombre de Animal: ");
		String nombre = teclado.nextLine();
 
		int cuentaVocales = 0;
		final String VOCALES = "aeiouAEIOUáéíóúÁÉÍÓÚ";
		//Con un bucle, recorremos cada carácter del String
		for (int c = 0; c < nombre.length(); c++) {
			//Contamos los caracteres que coincidan con alguno del String de vocales
			if (VOCALES.contains(nombre.substring(c, c+1)))
				cuentaVocales++;
		}
 
		System.out.println("Vocales contadas: " + cuentaVocales);
		teclado.close();
	}
 
}

Si lo pruebas, verás que funciona igual de bien, pero hemos necesitado menos líneas de programa.

Estos métodos de la clase String que hemos usado, son muy habituales y con el tiempo los irás memorizando. Pero recuerda que siempre puedes visitar la documentación oficial de Java para recordarlos. Basta con buscar en Google "java string" y en los primeros enlaces tendrás la clase String documentada al completo.

Ahí puedes ver el método charAt(), contains(), toLowerCase() y substring()


Bien, el siguiente ejercicio, el 5.
Comiénzalo tú, intenta llegar hasta donde puedas.
Busca en la documentación de Java, el mismo enlace que te he puesto de la String, la descripción de los métodos compareTo() y equals().
Busca en google ejemplos de como usar esos métodos.
E intenta aplicarlos a este ejercicio, en el que has de pedir dos nombres para compararlos.

Consigas lo que consigas, publícalo aquí y entre todos te ayudaremos a corregir y completarlo.
La mayoría de gente no te va a responder si solo pones los enunciados esperando a que te los resuelvan.

En cambio si publicas el código de tus intentos, por muy desastrosos que puedan ser, seguro que entonces la gente si te prestarán ayuda.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me ayudan con estos programas??

Publicado por Joaquin (4 intervenciones) el 05/05/2021 01:48:21
Muchas Gracias, con un poco de trabajo logre completar los primeros, ahora solo me faltan el 7 y el 8

7.- Se reutilizo el programa 6 añadiendo el método de la burbuja de ordenar de menor a mayor los nombres de la (A-Z) y el alumno lo concluirá añadiendo de mayor a menor (Z-A).


8.- Realizar un programa que por medio de un menú de opciones elija el usuario que desea insertar en un arreglo si números o nombres, y al elegir una opción dentro de ella habrá otro submenú de opciones para elegir el usuario si quiere ordenar de manera ASCENDENTE O DESCENDENTE, es para ambos opciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar