Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: @mayakoski en 07 de Febrero 2020, 01:52

Título: Java cómo crear números aleatorios Java clase random ejemplos ejercicio CU00908C
Publicado por: @mayakoski en 07 de Febrero 2020, 01:52
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"));
}

}
Título: Re:CU00908C numeros aleatorios Java clase random ejemplos ejercicio
Publicado por: Kabuto 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.
Título: Re:CU00908C numeros aleatorios Java clase random ejemplos ejercicio
Publicado por: @mayakoski 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");
}
}