Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: DRANXZ88 en 26 de Julio 2016, 22:23

Título: Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: DRANXZ88 en 26 de Julio 2016, 22:23
EJERCICIO Nº 1

Clase principal main

Código: [Seleccionar]
package ejercicioscu00909c;

import java.util.Random;

public class EjerciciosCu00909c {

    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        int A, B;
        String continuar;
        int acertado = 0;
        int fallado = 0;
        String letraIngresado;
        do {
            do {
                Random rnd = new Random();
                A = rnd.nextInt(11);
                B = rnd.nextInt(11);
            } while (A == B);

            System.out.println("Apuestas por A o por B ? : ");
            entrada.setEntrada();
            letraIngresado = entrada.getEntrada();
            if (letraIngresado.equalsIgnoreCase("a")) {
                if (A > B) {
                    acertado++;
                    System.out.println("A saca un " + A + " y B saca un " + B + "     HAS GANADO!!!");
                    System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");
                } else {
                    fallado++;
                    System.out.println("A saca un " + A + " y B saca un " + B + "     HAS PERDIDO!!!");
                    System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");
                }
            } else {
                if (A < B) {
                    acertado++;
                    System.out.println("A saca un " + A + " y B saca un " + B + "     HAS GANADO!!!");
                    System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");
                } else {
                    fallado++;
                    System.out.println("A saca un " + A + " y B saca un " + B + "     HAS PERDIDO!!!");
                    System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");
                }
            }

            System.out.println("Quieres probar otra vez ? (S/N) : ");
            entrada.setEntrada();
            continuar = entrada.getEntrada();
        } while (continuar.equalsIgnoreCase("s"));
        System.out.println("Adios!!");
    }

}


Clase entrada del teclado

Código: [Seleccionar]
package ejercicioscu00909c;

import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public void setEntrada() {
        entradaTeclado = sc.nextLine();
    }

    public String getEntrada() {
        return entradaTeclado;
    }

}



EJERCICIO Nº 2

Clases principal main

Código: [Seleccionar]
package ejercicios2cu00909c;

import java.util.Random;
import java.util.Arrays;

public class Ejercicios2Cu00909c {

    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        int[] numeroSorteado = new int[6];
        int[] numeroApostdo = new int[6];
        int acertado = 0;
        int numeroElegido;
        int a, b, c, d, e, f;
        String continuar;

        do {
            Random rnd = new Random();
            int numeroAleatorio = rnd.nextInt(49) + 1;
            a = rnd.nextInt(49) + 1;
            b = rnd.nextInt(49) + 1;
            c = rnd.nextInt(49) + 1;
            d = rnd.nextInt(49) + 1;
            e = rnd.nextInt(49) + 1;
            f = rnd.nextInt(49) + 1;
            numeroSorteado[0] = a;
            numeroSorteado[1] = b;
            numeroSorteado[2] = c;
            numeroSorteado[3] = d;
            numeroSorteado[4] = e;
            numeroSorteado[5] = f;
            Arrays.sort(numeroSorteado);
            System.out.println("Elige 6 numeros entre el 1 y el 49.");
            for (int i = 0; i < 6; i++) {
                System.out.println("Elige el numero" + (i + 1) + " :");
                entrada.setEntrada();
                numeroElegido = Integer.parseInt(entrada.getEntrada());
                numeroApostdo[i] = numeroElegido;
            }
            System.out.print("Combinación ganadora :");
            for (int i = 0; i < 6; i++) {
                System.out.print(numeroSorteado[i] + " ");
            }
            System.out.println("");
            System.out.print("Numeros Elegidos    : ");
            Arrays.sort(numeroApostdo);
            for (int i = 0; i < 6; i++) {
                System.out.print(numeroApostdo[i] + " ");
            }
            System.out.println("");
            for (int i = 0; i < numeroApostdo.length; i++) {
                for (int j = 0; j < numeroSorteado.length; j++) {
                    if (numeroApostdo[i] == numeroSorteado[j]) {
                        acertado++;
                    }
                }
            }
            System.out.println("Has acertado : " + acertado + " números");
            System.out.println("Quieres probar otra vez ? (S/N) : n");
            acertado = 0;
            entrada.setEntrada();
            continuar = entrada.getEntrada();
        } while (continuar.equalsIgnoreCase("s"));
        System.out.println("Adios");
    }

}


Clase entrada del teclado

Código: [Seleccionar]
package ejercicios2cu00909c;

import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public String Agregar() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

    public String getEntrada() {
        return entradaTeclado;
    }

}
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: Alex Rodríguez en 03 de Agosto 2016, 14:27
Hola DRANXZ88, el ejercicio 1 está bien resuelto.

He estado haciendo pruebas y creo que el código se puede hacer más compacto para evitar repetición de código. El código sería así:

Código: [Seleccionar]
import java.util.Random;
public class EjerciciosCu00909cNEW {
    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        int A, B;
        String continuar;
        int acertado = 0;
        int fallado = 0;
        String letraIngresado;
        do {
            do {
                Random rnd = new Random();
                A = rnd.nextInt(11);
                B = rnd.nextInt(11);
            } while (A == B);

            System.out.println("Apuestas por A o por B ? : ");
            entrada.setEntrada();
            letraIngresado = entrada.getEntrada();
            if (letraIngresado.equalsIgnoreCase("a") && (A>B) || letraIngresado.equalsIgnoreCase("b") && (A<B)) {
                acertado++;
                System.out.println("A saca un " + A + " y B saca un " + B + "     HAS GANADO!!!");
                System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");}   
                else {
                    fallado++;
                    System.out.println("A saca un " + A + " y B saca un " + B + "     HAS PERDIDO!!!");
                    System.out.println("Llevas " + acertado + " partidas ganadas y " + fallado + " partidas perdidas");
                }
           
            System.out.println("Quieres probar otra vez ? (S/N) : ");
            entrada.setEntrada();
            continuar = entrada.getEntrada();
        } while (continuar.equalsIgnoreCase("s"));
        System.out.println("Adios!!");
    }

}

El ejercicio 2, los únicos cambios que recomendaría son:

En vez de System.out.println("Elige el numero" + (i + 1) + " :"); usar System.out.print("Elige el numero" + (i + 1) + " :");

De esa forma la petición del dato se hace en la misma línea y no en otra línea

En la línea System.out.println("Quieres probar otra vez ? (S/N) : n");

lo correcto es System.out.println("Quieres probar otra vez ? (S/N) : ");

Eso es un detalle nomas.

He comprobado que en algunos casos la combinación ganadora no se genera bien. La combinación ganadora no debe permitir que se repitan números, pero en una prueba que he hecho me han salido números repetidos

Este es el resultado de la prueba

Citar
Elige 6 numeros entre el 1 y el 49.
Elige el numero1 :1
Elige el numero2 :2
Elige el numero3 :3
Elige el numero4 :4
Elige el numero5 :5
Elige el numero6 :6
Combinación ganadora :8 16 17 19 32 44
Numeros Elegidos    : 1 2 3 4 5 6
Has acertado : 0 números
Quieres probar otra vez ? (S/N) :
s
Elige 6 numeros entre el 1 y el 49.
Elige el numero1 :1
Elige el numero2 :2
Elige el numero3 :3
Elige el numero4 :4
Elige el numero5 :5
Elige el numero6 :6
Combinación ganadora :2 2 4 25 41 42
Numeros Elegidos    : 1 2 3 4 5 6
Has acertado : 3 números
Quieres probar otra vez ? (S/N) :
n
Adios


Aquí ves que la combinación ganadora es Combinación ganadora :2 2 4 25 41 42  con el 2 repetido. Habría que corregir el programa para que no puedan repetirse números en la combinación ganadora.

Saludos
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: Alex Rodríguez en 03 de Agosto 2016, 14:30
Otra cosa, al igual que debe comprobarse que la combinación ganadora no repita números, también debería comprobarse que el usuario no introduzca números repetidos, es decir, el usuario no debería poder repetir números como en este ejemplo:

Citar
Elige 6 numeros entre el 1 y el 49.
Elige el numero1 :2
Elige el numero2 :2
Elige el numero3 :2
Elige el numero4 :3
Elige el numero5 :3
Elige el numero6 :3
Combinación ganadora :2 12 32 36 40 47
Numeros Elegidos    : 2 2 2 3 3 3
Has acertado : 3 números
Quieres probar otra vez ? (S/N) :
n
Adios

Aquí se repite el 2 y el 3 varias veces.

Saludos
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: DRANXZ88 en 03 de Agosto 2016, 15:56
Gracia por tu corrección y comentario intentare resolver el ejercicios 2 con lo que le falta.
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: joe en 17 de Noviembre 2016, 22:48
ese ejercicio intente correrlo y me sale un error en
entredaDEteclado entrada new entradaDEteclado();
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: DRANXZ88 en 17 de Noviembre 2016, 23:27
Seguro que no le agregaste la clase EntradaDeTeclado.
Que esta luego código ahí.
Código: [Seleccionar]
package ejercicioscu00909c;

import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public void setEntrada() {
        entradaTeclado = sc.nextLine();
    }

    public String getEntrada() {
        return entradaTeclado;
    }

}
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: ESOJ en 18 de Noviembre 2016, 05:42
Buenos días.

En https://www.aprenderaprogramar.com/foros/index.php?topic=5504.0 (https://www.aprenderaprogramar.com/foros/index.php?topic=5504.0)
también se comenta este ejercicio.

Un saludo
Título: Re:Números aleatorios java rango juego que pida números al azar comprobar CU00909C
Publicado por: DRANXZ88 en 26 de Agosto 2019, 21:31
Ejercicios numero 2 corregido
Estaba mirando mi antiguo publicación y me encontré con este ejercicios que no he corregido todavía ahora alzo el modificado.-

Clase principal main
Código: [Seleccionar]
package ejercicios2cu00909c;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;

public class Ejercicios2Cu00909c {

    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        int[] numeroSorteado = new int[6];
        ArrayList<Integer> numeroApostdo = new ArrayList<>();
        int acertado = 0;
        int numeroElegido;
        int a, b, c, d, e, f;
        String continuar;
        int encontrado = 0;
        int apuesta = 0;
        do {
            do {
                Random rnd = new Random();
                a = rnd.nextInt(49) + 1;
                b = rnd.nextInt(49) + 1;
                c = rnd.nextInt(49) + 1;
                d = rnd.nextInt(49) + 1;
                e = rnd.nextInt(49) + 1;
                f = rnd.nextInt(49) + 1;
                numeroSorteado[0] = a;
                numeroSorteado[1] = b;
                numeroSorteado[2] = c;
                numeroSorteado[3] = d;
                numeroSorteado[4] = e;
                numeroSorteado[5] = f;
                Arrays.sort(numeroSorteado);
                encontrado = 0;
                for (int i = 0; i < numeroSorteado.length; i++) {
                    for (int j = 0; j < numeroSorteado.length; j++) {
                        if (numeroSorteado[i] == numeroSorteado[j]) {
                            encontrado++;
                        }
                    }
                }
            } while (encontrado > 6);
            System.out.println("Elige 6 numeros entre el 1 y el 49.");
            for (int i = 0; i < 6; i++) {
                System.out.println("Elige el numero" + (i + 1) + " :");
                entrada.setEntrada();
                apuesta = Integer.valueOf(entrada.getEntrada());
                while (numeroApostdo.contains(apuesta) == true || apuesta < 1 || apuesta > 49) {
                    System.out.print("El número introducido está fuera de ragon o repetido."
                            + "\nElija el numero " + (i + 1) + ": ");
                    entrada.setEntrada();
                    apuesta = Integer.valueOf(entrada.getEntrada());
                }
                numeroElegido = Integer.parseInt(entrada.getEntrada());
                numeroApostdo.add(numeroElegido);
            }
            System.out.print("Combinación ganadora :");
            for (int i = 0; i < 6; i++) {
                System.out.print(numeroSorteado[i] + " ");
            }
            System.out.println("");
            System.out.print("Numeros Elegidos    : ");
            Collections.sort(numeroApostdo);
            for (int i = 0; i < 6; i++) {
                System.out.print(numeroApostdo.get(i) + " ");
            }
            System.out.println("");
            for (int i = 0; i < numeroApostdo.size(); i++) {
                for (int j = 0; j < numeroSorteado.length; j++) {
                    if (numeroApostdo.get(i) == numeroSorteado[j]) {
                        acertado++;
                    }
                }
            }
            System.out.println("Has acertado : " + acertado + " números");
            System.out.println("Quieres probar otra vez ? (S/N) :");
            acertado = 0;
            numeroApostdo.clear();
            entrada.setEntrada();
            continuar = entrada.getEntrada();
        } while (continuar.equalsIgnoreCase("s"));
        System.out.println("Adios");
    }

}
Entrada del teclado
Código: [Seleccionar]
package ejercicios2cu00909c;

import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public String setEntrada() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

    public String getEntrada() {
        return entradaTeclado;
    }
}