Autor Tema: Números aleatorios java rango juego que pida números al azar comprobar CU00909C  (Leído 6560 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
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;
    }

}
« Última modificación: 03 de Agosto 2016, 14:05 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Gracia por tu corrección y comentario intentare resolver el ejercicios 2 con lo que le falta.

joe

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
ese ejercicio intente correrlo y me sale un error en
entredaDEteclado entrada new entradaDEteclado();

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
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;
    }

}

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Buenos días.

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

Un saludo

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
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;
    }
}

 

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".