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.