Java - Ayuda con ejercicio

   
Vista:

Ayuda con ejercicio

Publicado por Hitsugaya icarazob@daraevolution.com (3 intervenciones) el 28/10/2013 16:50:09
Perdonad en la uni me han enviado este ejercicio:








Escriba un programa que te permita jugar a la primitiva.
 El programa debe generar una secuencia de números como si fuera un boleto (9 números; mayores de 10 y menores de 100).
10 20 30 45 80 70 90 45 20
 Después el usuario escribirá un numero:
 Si existe, mostrará lo siguiente: (Ejemplo 45)
10 20 30 XX 80 70 90 45 20
 Si no existe, mostrará lo siguiente: (Ejemplo 72)
Número 72 no existe
10 20 30 XX 80 70 90 45 20
 Se puede salir de la aplicación cuando el usuario escriba 0.
 En caso de tener todos los números tachados, se mostrará:
Te ha tocado la primitiva. Eres millonario.



Y ya tengo hecho todo esto:

package primitiva;

import java.util.Scanner;



public class Primitiva {

public static int menu(){

int opcion;

System.out.println(" |-------------------------------------------------|");
System.out.println(" | ~ MENU PRINCIPAL ~ |");
System.out.println(" |-------------------------------------------------|");
System.out.println(" | 1. Jugar a la Primitiva |");
System.out.println(" | 2. Salir de la aplicación |");
System.out.println(" |-------------------------------------------------|\n");

System.out.println("Introduzca la opción que desea:");
Scanner teclado = new Scanner (System.in);
opcion = teclado.nextInt();

return opcion;

}


public static int GenerarNumero(){

int numero = 0;

while((numero < 10) || (numero > 100)){
numero = (int)(Math.random()*9);
}
return numero;

}


public static void GuardarNumeros(int arrayNumeros[]){

for(int i=0; i<arrayNumeros.length; i++){
int numeroSorteo = Primitiva.GenerarNumero();
arrayNumeros[i] = numeroSorteo;
}
}


public static int IntroducirNumeroTeclado(){

int numeroUsuario=0;

System.out.println("Introduzca un numero (mayor que 10 y menor que 100): ");

while((numeroUsuario < 10) || (numeroUsuario > 100)){
Scanner teclado = new Scanner (System.in);
numeroUsuario = teclado.nextInt();
}
return numeroUsuario;
}


public static void ComprobarNumero(int numeroUsuario, int arraySorteo[]){

boolean encontrado = false;

for(int i=0; i<arraySorteo.length; i++){
if(numeroUsuario == arraySorteo[i]){
encontrado = true;
arraySorteo[i] = -1;
}
}

if(!encontrado){
System.out.println("El número " + numeroUsuario + " no existe!");
}
}


public static void ImprimirNumeros(int arrayNumeros[]){

for(int i=0; i<arrayNumeros.length; i++){
if(arrayNumeros[i]==-1){
System.out.print("XX");
}else{
System.out.print(arrayNumeros[i]);
}
}
}

public static void ComprobarResultadoFinal(int arrayNumeros[]){

boolean iguales = true;
int i=0;

while(i<arrayNumeros.length && iguales==true){
if(arrayNumeros[i]==-1){
iguales = true;
i++;
}else{
iguales = false;
}
}

if(iguales){
System.out.println("\nTe ha tocado la primitiva! Eres millonario!");
}else{
System.out.println("\nLo siento no te ha tocado la primitiva!");
}
}


public static void main(String[] args) {

int opcion;
int salir=-1;
int numeroUsuario=0;
int[] arrayNumeros = new int[9];

do {
opcion = Primitiva.menu();

switch (opcion) {
case 1:
Primitiva.GuardarNumeros(arrayNumeros);

for(int i=0; i<arrayNumeros.length; i++){
numeroUsuario = Primitiva.IntroducirNumeroTeclado();
Primitiva.ComprobarNumero(numeroUsuario, arrayNumeros);
Primitiva.ImprimirNumeros(arrayNumeros);
}

Primitiva.ComprobarResultadoFinal(arrayNumeros);
break;

case 2:
System.out.println("Pulse 0 si desea salir de la aplicación:");
while(salir != 0){
Scanner teclado = new Scanner (System.in);
salir = teclado.nextInt();
}
break;

default:
break;
}
} while (opcion != 2);
}
}

Pero el programa me da muchos errores de ejecución y no funciona.

Me podríais ayudar?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con ejercicio

Publicado por Vicente (56 intervenciones) el 28/10/2013 18:37:04
Bueno, no es mas que poner puntos de interrupción y ver donde va fallando tu programa y el motivo.
Por pasos...
1- Lanzas el menú.... elegimos opción 1....
2- Lanzas el método GuardarNumero... el cual lanza el método GenerarNumero.. (meeec, bucle infinito, no tiene condición para terminar de generar números.) Corrige ese método.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con ejercicio

Publicado por Hitsugaya icarazob@daraevolution.com (3 intervenciones) el 28/10/2013 20:03:15
Podrías ser un poco más concreto? para ayudar con este tema porfis?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con ejercicio

Publicado por Vicente (56 intervenciones) el 28/10/2013 22:14:16
Concretamente, este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static int GenerarNumero()
    {
 
        int numero = 0;
 
        while((numero < 10) || (numero > 100))
        {
            numero = (int)(Math.random()*9);
        }
 
        return numero;
 
    }

Tú lo usas para generar los números que quieres que sean los de la primitiva... pero mira tu condición. Mientras el número sea menor de 10 o el número sea mayor de 100... a generar numeros aleatorios del 0 al 9... es decir, nunca sales del bucle.
Ese método tienes que corregirlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con ejercicio

Publicado por UnoPorAhi (128 intervenciones) el 28/10/2013 22:19:34
Pues exactamente lo que te está diciendo. Es difícil ser más concreto.

Este bucle:

while((numero < 10) || (numero > 100)){
numero = (int)(Math.random()*9);
}

No termina nunca, ya que numero siempre es menor que 10 (estas generando aleatorios del 0 al 9)

Como te comenta Vicente, para corregir estos mini-errores solo tienes que depurar el código con tu ide. Si no sabes hacerlo, aquí tienes un tutorial muy sencillo para eclipse:


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar