clase Cubo
fichero Cubo.java:
/** * Cubo.java Definición de la clase Cubo * * @author Luis José Sánchez */ public class Cubo { // atributos //////////////////////////// int capacidad; // capacidad máxima en litros int contenido; // contenido actual en litros // métodos ////////////////////////////// // constructor Cubo(int c) { this.capacidad = c; } // métodos getter int getCapacidad() { return this.capacidad; } int getContenido() { return this.contenido; } // método setter void setContenido(int litros) { this.contenido = litros; } // otros métodos void vacia() { this.contenido = 0; } /** * Llena el cubo al máximo de su capacidad. */ void llena() { this.contenido = this.capacidad; } /** * Pinta el cubo en la pantalla. * Se muestran los bordes del cubo con el carácter # y el * agua que contiene con el carácter ~. */ void pinta() { for (int nivel = this.capacidad; nivel > 0; nivel--) { if (this.contenido >= nivel) { System.out.println("#~~~~#"); } else { System.out.println("# #"); } } System.out.println("######"); } /** * Vuelca el contenido de un cubo sobre otro. Antes de echar el agua se * comprueba cuánto le cabe al cubo destino. */ void vuelcaEn(Cubo destino) { int libres = destino.getCapacidad() - destino.getContenido(); if (libres > 0) { if (this.contenido <= libres) { destino.setContenido(destino.getContenido() + this.contenido); this.vacia(); } else { this.contenido -= libres; destino.llena(); } } } }
Juego: Usar dos cubos, pedir sus capacidades y llenar/vaciar/volcar los dos cubos sucesivamente hasta dejar 1 litro en uno de los cubos. Hay que contar el número de operaciones realizadas.
Fichero EjemploCubo.java:
import java.util.Scanner; class EjemploCubo { public static void main(String args[] ) { Cubo cubo1; Cubo cubo2; int numero; Scanner scanner = new Scanner(System.in); boolean continuar = true; int intentos = 0; do { System.out.println("Introduzca la capacidad del 1º cubo ( > 0 ): "); numero = scanner.nextInt(); } while (numero < 1); cubo1 = new Cubo(numero); do { System.out.println("Introduzca la capacidad del 2º cubo ( > 0 ): "); numero = scanner.nextInt(); } while (numero < 1); cubo2 = new Cubo(numero); do { System.out.println("1- Llenar cubo 1"); System.out.println("2- Llenar cubo 2"); System.out.println("3- Vaciar cubo 1"); System.out.println("4- Vaciar cubo 2"); System.out.println("5- Volcar cubo 1 en cubo 2"); System.out.println("6- Volcar cubo 2 en cubo 1"); do { System.out.println("Introduzca la operación a realizar: "); numero = scanner.nextInt(); } while (numero < 1 || numero > 6); switch (numero) { case 1: cubo1.llena(); break; case 2: cubo2.llena(); break; case 3: cubo1.vacia(); break; case 4: cubo2.vacia(); break; case 5: cubo1.vuelcaEn(cubo2); break; case 6: cubo2.vuelcaEn(cubo1); break; } intentos ++; if (cubo1.getContenido() == 1 || cubo2.getContenido() == 1) { continuar = false; } else { System.out.println("Cubo 1: " + cubo1.getCapacidad() + " / " + cubo1.getContenido()); System.out.println("Cubo 2: " + cubo2.getCapacidad() + " / " + cubo2.getContenido()); } } while (continuar); scanner.close(); System.out.println("Enhorabuena, lo has conseguido en " + intentos + " intentos"); System.out.println("Cubo 1: " + cubo1.getCapacidad() + " / " + cubo1.getContenido()); cubo1.pinta(); System.out.println("Cubo 2: " + cubo2.getCapacidad() + " / " + cubo2.getContenido()); cubo2.pinta(); } }
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.