Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pupyrepetto@gmail.com en 25 de Abril 2020, 07:26
-
Hola comunidad! Soy nuevo en esto y estoy teniendo problemas para resolver algo. Lo que pretendo programar es un metodo que me resuelva lo siguiente:
tengo un numero "Apuesta" de 4 cifras 1-2-3-4
tengo un numero "PrimerPremio" de 4 cifras XXXX
no logro que el programa me diga que tengo aciertos a 1 cifra.
Y tampoco logro que cuando ingreso un numero de solo 2 cifras en Apuesta no me rellene de ceros los 2 lugares vacios (centena y unidad de mil).
import java.util.Scanner;
public class BuscarAciertos {
public BuscarAciertos() {
Scanner teclear = new Scanner(System.in);
System.out.print("Ingrese numero apostado (hasta 4 cifras): \n" );
numero = teclear.nextInt();
if (numero<10000 && numero>999){
XXXX=true;
XXX=true;
XX=true;
X=true;
cuarto = numero%10;
numero = numero/10;
tercero = numero%10;
numero = numero/10;
segundo = numero%10;
numero = numero/10;
primero = numero%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d %d %d \n", primero, segundo, tercero, cuarto);
} else if (numero<1000 && numero>99) {
XXXX=false;
XXX=true;
XX=true;
X=true;
tercero = numero%10;
numero = numero/10;
segundo = numero%10;
numero = numero/10;
primero = numero%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d %d \n", primero, segundo, tercero);
}else if (numero<100 && numero>10){
XXXX=false;
XXX=false;
XX=true;
X=true;
segundo = numero%10;
numero = numero/10;
primero = numero%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d \n", primero, segundo);
}else if (numero<10 && numero>0){
XXXX=false;
XXX=false;
XX=false;
X=true;
primero = numero%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d \n", primero);
}
//SEPARAMOS LA CABEZA EN 4
System.out.print("Escribe el numero GANADOR !!: \n" );
int cabeza=teclear.nextInt();
if (cabeza<10000 && cabeza>999){
cuartoC = cabeza%10;
cabeza = cabeza/10;
terceroC = cabeza%10;
cabeza = cabeza/10;
segundoC = cabeza%10;
cabeza = cabeza/10;
primeroC = cabeza%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d %d %d \n", primeroC, segundoC, terceroC, cuartoC);
}else if (cabeza<1000 && cabeza>99) {
terceroC = cabeza%10;
cabeza = cabeza/10;
segundoC = cabeza%10;
cabeza = cabeza/10;
primeroC = cabeza%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d %d \n", primeroC, segundoC, terceroC);
}else if (cabeza<100 && cabeza>10){
segundoC = cabeza%10;
cabeza = cabeza/10;
primeroC = cabeza%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d %d \n", primeroC, segundoC);
}else if (cabeza<10 && cabeza>0){
primeroC = cabeza%10;
System.out.printf("Los numeros separados son:");
System.out.printf("%d \n", primeroC);
}
if ( cuarto==cuartoC && tercero==terceroC && segundo==segundoC && primero==primeroC ){
System.out.println("Felicitaciones acertaste las 4 cifras");
}else if ( XXXX=false && cuarto==cuartoC && tercero==terceroC && segundo==segundoC && primero!=primeroC ){
System.out.println(" acertaste las 3 cifras");
}else if (XXX=false && cuarto==cuartoC && tercero==terceroC && segundo!=segundoC ){
System.out.println("acertaste las 2 cifras");
}else if (XX=false && cuarto==cuartoC && tercero!=terceroC){
System.out.println(" acertaste solo 1 cifra");
} else {
System.out.println(" SIN ACIERTOS.");
}
}
private int jugada;
private int numero;
boolean XXXX=false;
boolean XXX=false;
boolean XX=false;
boolean X=false;
private int cuarto;
private int tercero;
private int segundo;
private int primero;
private int cuartoC;
private int terceroC;
private int segundoC;
private int primeroC;
}
-
Deberías intentar hacerlo usando String y no int.
Tenemos la tendencia a que cuando trabajamos con números, pensamos que lo correcto es escoger un tipo de dato numérico como int.
Pero solo deberíamos hacerlo cuando necesitemos hacer operaciones aritméticas con esos números: sumar, restar, dividir, contar, acumular, potenciar,...
Para casos como números de teléfono, números DNI/cédula, códigos postales, placas de vehículos..., números de lotería..., etc...
Es mejor usar String.
Sobre todo si vamos a necesitar comparar los caracteres que componen ese número por separado, sustituirlos, añadirlos... y cosas así, va a resultar mucho más fácil con la clase String que no con int/Integer.
Si no quieres usar String, otra opción es usar un array de 4 int, aunque esto te obligaría a pedir los 4 números de apuesta por separado.
Trabajar directamente con un int te va a obligar a usar mucho código y romperte la cabeza.
Y además NUNCA vas a conseguir que por ejemplo 45 te lo transforme en 0045... porque son exactamente el mismo número y aritméticamente los 0 a la izquierda no tienen ningún valor.
Un int no guarda caracteres, guarda un valor aritmético.
Si quieres que un 45 tenga 4 caracteres complementando con ceros a la izquierda, tendrás que usa un String o un array.
Inténtalo, si necesitas más ayuda porque no conoces bien la clase String y sus numerosos métodos, dilo y te ayudamos en lo que sea.
-
Gracias Kabuto.... es verdad !!!! empece todo esto pensando en Int y nunca pare a pensar que podria usar String !!!
Gracias.... soy nuevo y me cuesta ver la Matrix aun. jajaja
voy a intentar con String.
-
pero la pucha, semanas pensando la manera de hacerlo con INT y ahora en un ratito lo tengo terminado pasando todo a String.
Gracias genio!!!!