Hola a todos !! paso a dejar el código de los dos ejercicios de la clase CU00909C del tutorial pdf de programación Java avanzada. Desde ya muchas gracias. Un saludo, Luis
EJERCICIO Nº 1Crea un programa que elija dos números enteros aleatorios A y B pero no los muestre por pantalla aún. Si los dos números fueran iguales, deberá repetirse la elección hasta que sean distintos. El programa preguntará por quién apostamos, A o B (gana el número más alto). Una vez el usuario haya introducido su apuesta, el programa mostrará el valor de A y B, dirá si hemos ganado la apuesta (acertado el número más alto) o perdido y nos dirá cuántas partidas hemos ganado y perdido hasta el momento. Tras una jugada, nos preguntará si queremos jugar otra vez.
Ejemplo de ejecución:
Apuestas por A o por B ? : A
A saca un 9 y B saca un 6 HAS GANADO!!!
Llevas 1 partidas ganadas y 0 partidas perdidas
Quieres probar otra vez ? (S/N) : S
Apuestas por A o por B ? : A
A saca un 1 y B saca un 8 HAS PERDIDO!!!
Llevas 1 partidas ganadas y 1 partidas perdidas
Quieres probar otra vez ? (S/N) : N
Adiós
Solución propuesta:
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.Random;
import java.util.Scanner;
public class Ejercicio1 {
public static void main(String arg[ ]) {
Random rnd = new Random();
Scanner teclado = new Scanner(System.in);
String continuar="S";
String nroElegido="";
int totalAciertos=0;
int totalDesaciertos=0;
String respuesta="";
do {
int nroA = rnd.nextInt(10);
int nroB = rnd.nextInt(10);
System.out.println("Apuestas por A o por B ?:");
while(nroA==nroB){
nroB = rnd.nextInt(10);
}
nroElegido = teclado.next();
while(nroElegido.equalsIgnoreCase("A")==false&&nroElegido.equalsIgnoreCase("B")==false){
System.out.println("Apuestas por A o por B ?:");
nroElegido = teclado.next();
}
if ((nroElegido.equalsIgnoreCase("A")&&nroA>nroB)||(nroElegido.equalsIgnoreCase("B")&&nroB>nroA)){
totalAciertos=totalAciertos+1;
respuesta=" HAS GANADO!!!";
} else {totalDesaciertos=totalDesaciertos+1;
respuesta=" HAS PERDIDO!!!";
}
System.out.println("A saca un "+nroA+" y B saca un "+nroB+respuesta);
System.out.println("Llevas "+totalAciertos+" partidas ganadas y "+totalDesaciertos+" partidas perdidas");
System.out.println("Quieres probar otra vez ? (S/N):");
continuar = teclado.next();
}
while(continuar.equalsIgnoreCase("S"));
System.out.println("Adiós");
//System.out.println("el numero ingresado es :"+inicioRango);
}
}
EJERCICIO Nº 2Ahora vamos a jugar a la “Lotería primitiva”. Para ello, se pedirá al usuario que introduzca 6 números enteros comprendidos entre el 1 y el 49 ambos incluidos. No estará permitido repetir número. Una vez elegidos los seis números el programa nos mostrará nuestros 6 números así como la combinación ganadora (ordenada de menor a mayor). Esta combinación constará de 6 números entre 1 y 49 elegidos al azar por el programa. Finalmente nos dirá cuántos aciertos hemos tenido y nos preguntará si queremos volver a jugar.
Ejemplo de ejecución:
Elige 6 numeros entre el 1 y el 49.
Elige el numero 1 : 3
Elige el numero 2 : 8
Elige el numero 3 : 14
Elige el numero 4 : 2
Elige el numero 5 : 34
Elige el numero 6 : 38
Numeros Elegidos : 3 8 14 2 34 38
Combinación ganadora : 6 14 21 27 30 48
Has acertado : 1 números
Quieres probar otra vez ? (S/N) : n
Adiós
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.*;
public class Ejercicio2 {
public static void main(String arg[ ]) {
ArrayList lista = new ArrayList<Integer>();
Random rnd = new Random();
Scanner teclado = new Scanner(System.in);
String continuar="S";
int[ ] nroElegido = new int[6];
int[ ] nroLoteria = new int[6];
int totalAciertos=0;
int i=0;
int j=0;
boolean nroRepetido=false;
// elección de los números para el sorteo
do {
System.out.println("Elige 6 números entre el 1 y el 49.");
for(i=0;i<6;i++){
do{
nroRepetido=false;
System.out.print("Elige el número "+(i+1)+" : ");
nroElegido[i]=Integer.parseInt(teclado.next());
for (j=0;j<i;j++){
if (nroElegido[i]==nroElegido[j]){nroRepetido=true;}
}
}
while(nroElegido[i]<1||nroElegido[i]>49||nroRepetido==true);
}
// ordena la lista de nros elegidos
lista.clear();
for (i=0;i<6;i++){lista.add(nroElegido[i]);}
Collections.sort(lista);
for (i=0;i<6;i++){nroElegido[i]=(int)lista.get(i);}
// muestra los nros elegidos
System.out.print("Los números elegidos son :");
for (i=0;i<6;i++){
System.out.print(nroElegido[i]);
if(i==5){System.out.println("");} else {System.out.print(", ");}
}
// se realiza el sorteo de la loteria
i=0;
do {
nroLoteria[i] = rnd.nextInt(49)+1;
nroRepetido=false;
for (j=0;j<i;j++){
if (nroLoteria[i]==nroLoteria[j]){nroRepetido=true;}
}
if (nroRepetido==false) {i++;}
}
while(i<6);
// ordena los numeros sorteados por la Loteria
lista.clear();
for (i=0;i<6;i++){lista.add(nroLoteria[i]);}
Collections.sort(lista);
for (i=0;i<6;i++){nroLoteria[i]=(int)lista.get(i);}
// muestra los nros de la loteria
System.out.print("Combinación ganadora :");
for (i=0;i<6;i++){
System.out.print(nroLoteria[i]);
if(i==5){System.out.println("");} else {System.out.print(", ");}
}
// control de nros ganadores
totalAciertos=0;
for (i=0;i<6;i++){
for (j=0;j<6;j++){
if(nroElegido[i]==nroLoteria[j]){ totalAciertos = totalAciertos+1;}
}
}
System.out.println("Has acertado: "+totalAciertos+" números");
System.out.print("Quieres probar otra vez?(S/N):");
continuar = teclado.next();
}
while(continuar.equalsIgnoreCase("S"));
System.out.println("Adiós");
//System.out.println("el numero ingresado es :"+inicioRango);
}
}