Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pepote21 en 03 de Febrero 2017, 00:05
-
Hola a todos. Presento mi código. El método de mostrarNums() simplemente es para comprobar y el método compararNums2() es porque sin él cuando los dos números eran iguales, a veces me fallaba, muy pocas veces. Así pues, de ahí ese segundo método de comparar.
GRACIAS. Un saludo.
package practicas.avanzadas.ej_909_C_1;
import java.util.Random;
import java.util.Scanner;
/**
* Ejercicio 1 CU00909C
* Apostar por un número mayor que otro
* @author pepote21
* @version 20170201
*/
public class Apostar909_C_1{
Random rnd=new Random();
Scanner sc=new Scanner(System.in);
int A,B,mayor,partGanadas,partPerdidas;
String apostar,respuesta;
public Apostar909_C_1(){
A=0;
B=0;
mayor=0;
partGanadas=0;
partPerdidas=0;
apostar="";
respuesta="";
}
public void generarNums(){
A=rnd.nextInt(11);
B=rnd.nextInt(11);
}
public void compararNums(){
if(A==B){
generarNums();
compararNums2();
}else if(A>B){
mayor=A;
}else{
mayor=B;
}
}
public void compararNums2(){
if(A==B){
generarNums();
}else if(A>B){
mayor=A;
}else{
mayor=B;
}
}
public void mostrarNums(){
System.out.println("A = "+A);
System.out.println("B = "+B);
}
public String apostarPor(){
System.out.print("¿Apuestas por A o por B?: ");
apostar=sc.nextLine();
return apostar;
}
public void mostrarResultado(){
if(mayor==A && apostar.equalsIgnoreCase("A") || mayor==B && apostar.equalsIgnoreCase("B")){
System.out.println("A saca un "+A+" y B saca un "+B+" HAS GANADO!!!");
partGanadas++;
}else{
System.out.println("A saca un "+A+" y B saca un "+B+" HAS PERDIDO!!!");
partPerdidas++;
}
System.out.println("Llevas "+partGanadas+" partidas ganadas y "+partPerdidas+" partidas perdidas");
}
public void apostarMas(){
System.out.println("¿Quieres probar otra vez? (S/N)");
respuesta=sc.nextLine();
if(respuesta.equalsIgnoreCase("S")){
generarNums();
mostrarNums();
compararNums();
mostrarNums();
apostarPor();
mostrarResultado();
apostarMas();
}else{
System.out.println("Adios");
}
}
public static void main(String[] args){
Apostar909_C_1 ap=new Apostar909_C_1();
ap.generarNums();
ap.mostrarNums();
ap.compararNums();
ap.mostrarNums();
ap.apostarPor();
ap.mostrarResultado();
ap.apostarMas();
}
}
-
Buenas Pepote21 cuando presentes los resultados de una entrega de un curso es conveniente presentar todos los ejercicios de esa entrega al mismo tiempo (en el mismo hilo), en lugar de presentar solo un ejercicio.
Un ejemplo de resultado obtenido con tu código es este:
A = 3
B = 0
A = 3
B = 0
¿Apuestas por A o por B?: A
A saca un 3 y B saca un 0 HAS GANADO!!!
Llevas 1 partidas ganadas y 0 partidas perdidas
¿Quieres probar otra vez? (S/N)
S
A = 4
B = 2
A = 4
B = 2
¿Apuestas por A o por B?: B
A saca un 4 y B saca un 2 HAS PERDIDO!!!
Llevas 1 partidas ganadas y 1 partidas perdidas
¿Quieres probar otra vez? (S/N)
N
Adios
El ejercicio nos pedía no mostrar el resultado antes de que el usuario apostara, pero eso no lo cumple el código. Además lo muestra por duplicado.
Otra cosa a mejorar es la forma de nombrar las clases (Apostar909_C_1 no es un nombre adecuado) y el hacer un buen diseño orientado a objetos (según esto, las responsabilidades deben estar separadas en clases, no todo junto).
Otra cosa a mejorar: el diseño basado en compararNums y compararNums2 no es un buen diseño.
En este hilo puedes ver un ejemplo de mejor diseño: https://www.aprenderaprogramar.com/foros/index.php?topic=5682.0 aunque como siempre la recomendación es seguir el curso de Java básico para adquirir buenos hábitos en la programación orientada a objetos
Salu2
-
Gracias Ogramar.
Lo tengo todo en cuenta. Nada más vuelva a java lo repasaré todo.
Un saludo.