Autor Tema: Java cómo crear números aleatorios Java clase random ejemplos ejercicio CU00908C  (Leído 2083 veces)

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Dejo mi solución al ejercicio de generación de numeros aleatorios con random CU00908C del currso avanzado de programación Java. Si tienen que criticar critiquen, pero digan algo constructivo por favor :)

Código: [Seleccionar]
package claseCU00908C;

import java.util.Random;
import java.util.Scanner;;

public class EjercicioCU00908C {

public static void main(String args[]) {

int rangoIni, rangoFin, numIntentos, numUsuario;
Random rnd = new Random();
int intento = 0;

boolean encontrado = false;

Scanner entradaTeclado = new Scanner(System.in);

do {
int aciertos = 0;
int noAciertos = 0;
System.out.print("Introduce el numero inicial del rango: ");
rangoIni = entradaTeclado.nextInt();

System.out.print("Introduce el numero final del rango: ");
rangoFin = entradaTeclado.nextInt();

System.out.print("Introduce el número de intentos: ");
numIntentos = entradaTeclado.nextInt();

int[] numAleatorios = new int[numIntentos];

for (int i = 0; i < numIntentos; i++) {
numAleatorios[i] = (int) (rnd.nextDouble() * (rangoFin - rangoIni) + rangoIni);

//System.out.println(numAleatorios[i]);

System.out.print("¿Qué numero estoy pensando?: ");
numUsuario = entradaTeclado.nextInt();
if (numAleatorios[i] != numUsuario) {
System.out.println("No has acertado ");
noAciertos += 1;
} else {
System.out.println("Has acertado ");
encontrado = true;
aciertos += 1;
}
}

if (!encontrado) {
System.out.print(
"Has acertado " + aciertos + " veces y has fallado " + noAciertos + " veces. Eran solución: ");
for (int i = 0; i < numAleatorios.length; i++) {
System.out.print(numAleatorios[i] + ",");
}
System.out.println();
} else {
System.out.print(
"Has acertado " + aciertos + " veces y has fallado " + noAciertos + " veces. Eran solución: ");
for (int i = 0; i < numAleatorios.length; i++) {
System.out.print(numAleatorios[i] + ",");
}
System.out.println();
}

System.out.print("Quieres probar otra vez ? (S/N): ");

} while (entradaTeclado.next().equals("S"));
}

}
« Última modificación: 31 de Agosto 2020, 19:23 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:CU00908C numeros aleatorios Java clase random ejemplos ejercicio
« Respuesta #1 en: 07 de Febrero 2020, 23:55 »
Hola.
Este if..else.. es innecesario:
Código: [Seleccionar]
if (!encontrado) {
System.out.print(
"Has acertado " + aciertos + " veces y has fallado " + noAciertos + " veces. Eran solución: ");
for (int i = 0; i < numAleatorios.length; i++) {
System.out.print(numAleatorios[i] + ",");
}
System.out.println();
} else {
System.out.print(
"Has acertado " + aciertos + " veces y has fallado " + noAciertos + " veces. Eran solución: ");
for (int i = 0; i < numAleatorios.length; i++) {
System.out.print(numAleatorios[i] + ",");
}
System.out.println();
}

Si te fijas, tanto si encontrado es  false, como si es true, estás haciendo exactamente lo mismo en ambos casos.
Así que no es necesario consultar el valor de la variable encontrado.
A no ser que específicamente quieras variar el mensaje en pantalla según su valor, pero ahora mismo no varía.

Por lo demás, todo parece correcto.

Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Re:CU00908C numeros aleatorios Java clase random ejemplos ejercicio
« Respuesta #2 en: 08 de Febrero 2020, 16:05 »
Gracias la observación, si en verdad el código indicado no tiene objeto, he realizado el cambio necesario

Código: [Seleccionar]
package claseCU00908C;

import java.util.Random;
import java.util.Scanner;;

public class EjercicioCU00908C {

public static void main(String args[]) {

int rangoIni, rangoFin, numIntentos, numUsuario;
Random rnd = new Random();
int intento = 0;

Scanner entradaTeclado = new Scanner(System.in);

do {
int aciertos = 0;
int noAciertos = 0;
System.out.print("Introduce el numero inicial del rango: ");
rangoIni = entradaTeclado.nextInt();

System.out.print("Introduce el numero final del rango: ");
rangoFin = entradaTeclado.nextInt();

System.out.print("Introduce el número de intentos: ");
numIntentos = entradaTeclado.nextInt();

int[] numAleatorios = new int[numIntentos];

for (int i = 0; i < numIntentos; i++) {
numAleatorios[i] = (int) (rnd.nextDouble() * (rangoFin - rangoIni) + rangoIni);

//System.out.println(numAleatorios[i]);

System.out.print("¿Qué numero estoy pensando?: ");
numUsuario = entradaTeclado.nextInt();
if (numAleatorios[i] != numUsuario) {
System.out.println("No has acertado ");
noAciertos += 1;
} else {
System.out.println("Has acertado ");
aciertos += 1;
}
}

System.out.print(
"Has acertado " + aciertos + " veces y has fallado " + noAciertos + " veces. Eran solución: ");
for (int i = 0; i < numAleatorios.length; i++) {
System.out.print(numAleatorios[i] + ",");
}
System.out.println();

System.out.print("Quieres probar otra vez ? (S/N): ");

} while (entradaTeclado.next().equals("S"));
System.out.println("Adiós");
}
}
« Última modificación: 31 de Agosto 2020, 19:22 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".