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
-
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 :)
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"));
}
}
-
Hola.
Este if..else.. es innecesario:
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.
-
Gracias la observación, si en verdad el código indicado no tiene objeto, he realizado el cambio necesario
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");
}
}