Autor
|
Tema: Problemilla bucle de JAVA (Leído 3,482 veces)
|
dennis094
Desconectado
Mensajes: 185
Embrace your dreams, protect your honor
|
Buenas, estoy haciendo un programa formado por 3 modulos, el primero de ellos que es con el que estoy ahora mismo me pide que escriba 6 numeros separados por una "," entre ellos, y que despues los almacene en un array de tipo Int para despues imprimirlo. Hasta ahi lo he conseguido, pero hay una condicion que dice que los numeros introducidos deben estar entre el 1 y el 49 (ambos incluidos) y que no puede haber numeros repetidos, por ejemplo: *VALIDO* 1,43,12,21,7,9 *NO VALIDO* 1,50,24,24,12,1 ¿Como podria conseguirlo? tengo un bucle con un IF pero no funciona bien, espero vuestra ayuda. package loteriaprimitiva;
import java.util.Scanner; import java.util.Random;
public class LoteriaPrimitiva {
public static void main(String[] args) { Scanner entrada = new Scanner(System.in); String Combinacion; String MiCombinacion[] = new String [6]; int MisNumeros[] = new int [6]; int i; System.out.println("EJERCICIO 1 LAB PROGRAMACIÓN. \n"); System.out.println("**LOTERIA PRIMITIVA** \n");
//METODO JUGAR (PEDIR 6 NUMEROS) System.out.println("NOTA: *Sólo debe introducir 6 numeros separados por coma, pues solo se leerán los 6 primeros.*"); System.out.print("Introduzca su combinación: "); Combinacion = entrada.nextLine(); // Lee el string Combinacion y se salta las "," y guarda el resultado en el array MiCombinacion. MiCombinacion = Combinacion.split(","); for (i=0;i<6;i++){ MisNumeros[i] = Integer.parseInt(MiCombinacion[i]);// Convierte el array de String en un array de Int if (MisNumeros[i] > 49 || MisNumeros[i] < 1) { System.out.println(" No es un numero correcto."); System.out.print("Introduzca su combinación: "); Combinacion = entrada.nextLine(); } } System.out.print("Combinación jugada: "); for (i=0;i<6;i++) { System.out.print(MisNumeros[i]+","); } } }
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
Pues solo se me ocurre lo siguiente xD /** * * @author Darhius929 */ import java.util.Scanner; import java.util.Random; public class LoteriaPrimitiva { private final int TAMANO = 6; private final int SUBINDICE = 1; private final int SUPERINDICE = 49; public static void main (String args []){ new LoteriaPrimitiva(); } public LoteriaPrimitiva(){ Scanner entrada = new Scanner (System. in); //int misNumeros[] = new int [TAMANO]; System. out. println("NOTA: *Sólo debe introducir 6 numeros separados por coma, pues solo se leerán los 6 primeros.*"); System. out. print("Introduzca su combinación: "); combinacion = entrada.nextLine(); miCombinacion = combinacion.split(","); boolean esValido = false; for(int indice=0; indice<TAMANO; indice++){ try { int numero = Integer. parseInt(miCombinacion [indice ]); if(numero>=SUBINDICE && numero<=SUPERINDICE) { //System.out.println("el numero " +numero+" es valido"); for(int indice2=0; indice2<TAMANO; indice2++) { try { int numero2 = Integer. parseInt(miCombinacion [indice2 ]); if(numero==numero2 && indice!=indice2) { System. out. println("Hay numeros repetidos"); esValido=false; break; }else { esValido=true; } ex.printStackTrace(); } } }else { System. out. println("Se encontro un numero fuera del rango"); esValido=false; break; } e.printStackTrace(); } } if(esValido){ System. out. println("Buena combinacion"); } } }
Saludos.
|
|
|
En línea
|
abc
|
|
|
dennis094
Desconectado
Mensajes: 185
Embrace your dreams, protect your honor
|
Gracias, al final no lo hice exactamente asi, pero me ayudaste a pensar en una forma nueva, simplemente hice un DO WHILE y le agrege un par de cosillas que me faltaban. Tengo otro problemilla... Una vez haya introducido los 6 numeros que me piden, no puede haber ningun numero repetido, y si lo hay debo volver a introducirlos otra vez. Mi idea es crear un bucle for que recorra el array y vaya comprobando si los numeros que he introducido estan repetidos, pero no se exactamente como hacerlo. Espero que puedan ayudarme Un saludo !
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
Sí de hecho lo iba a hacer de las dos formas pero como miré que utilizabas el for pensé que tenia que ser necesario así y tambien habia pensado que se debian volver a introducir el dato.
En este caso tendrías que usar dos do while el primero es para empezar a leer los datos el segundo es para comparar si existe el valor (hacer mientras valor existe en arreglo).
Igual y más tarde te apoyo.
Saludos..
|
|
|
En línea
|
abc
|
|
|
dennis094
Desconectado
Mensajes: 185
Embrace your dreams, protect your honor
|
Esque me sale un problema, he hecho un boolean, y si encuentra algun numero repetido = error, entonces, if (error) --> vuelve a introducir numeros. Pero solo me los pide una vez, y aunque meta otra vez datos repetidos ya los toma como validos. Entonces he pensado en otro DO WHILE, pero no funciona correctamente.. te dejo el codigo por si encuentras algun fallo *Muchas gracias por tu ayuda* for (i=0;i<6;i++) { // Bucle para que no se repitan los numeros. for (j=aux2;j<6;j++){ if (misNumeros[i] == misNumeros[j]){ error2=true; } aux2++;} } // j=0;aux2=1 if (error2){ do { System.out.println(" Ha repetido algun/os numeros."); System.out.print("Introduzca su combinación: "); combinacion = entrada.nextLine(); miCombinacion = combinacion.split(","); for(i=0;i<6;i++){ misNumeros[i] = Integer.parseInt(miCombinacion[i]); } } while (error2); }
|
|
« Última modificación: 9 Marzo 2013, 13:03 pm por dennis094 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda (Parar bucle con dato boolean) [bucle while]
Java
|
Dem0ny
|
5
|
18,628
|
17 Diciembre 2008, 17:43 pm
por Dem0ny
|
|
|
Bucle en vb6 ????
Programación Visual Basic
|
marcofbb
|
2
|
1,864
|
28 Mayo 2010, 03:44 am
por marcofbb
|
|
|
Un Problemilla con Un Ejercicio(Java)
Ejercicios
|
YamiAlx
|
2
|
3,856
|
25 Agosto 2010, 23:44 pm
por YamiAlx
|
|
|
programacion java con bucle for
Ejercicios
|
maryuri
|
2
|
3,269
|
5 Septiembre 2016, 08:38 am
por Zeros1001
|
|
|
Ejercicio java bucle
Java
|
txipiron
|
1
|
2,024
|
10 Febrero 2017, 11:40 am
por MNicolas
|
|