Hola a todos. Os paso mi código al ejercicio CU00924C del manual de programación Java con dos clases, Hotel y Principal.
Para el ejercicio he puesto una variable más en la clase Hotel, int numZona, que no estaba prevista, y segundo no he puesto los métodos equals() y hascode(), lo cual no sé si es correcto, debido a mi falta de aprendizaje.
GRACIAS.
Un saludo.
import java.util.Objects;
/**
* Ejercicio tema CU00924C
* Interfaces Set y SortedSet
* @author
*/
public class Hotel implements Comparable<Hotel>{
private int idHotel;
private String zona;
private int precio;
private int numZona;
public Hotel(int idHotel,int numZona, int precio){
this.idHotel=idHotel;
switch(numZona){
case 0: setZona("Playa");
break;
case 1: setZona("Montaña");
break;
case 2: setZona("Rural");
break;
default: setZona("null");
break;
}
this.precio=precio;
}
public void setZona(String zona){
this.zona=zona;
}
public void setNumZona(int numZona){
this.numZona=numZona;
}
public int getNumZona(){
return numZona;
}
public String getZona(){
return zona;
}
@Override
public int compareTo(Hotel o) {
return this.precio-o.precio;
}
@Override
public String toString() {
return "Hotel{" + "idHotel=" + idHotel + ", zona=" + zona + ", precio=" + precio + '}';
}
}
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
/**
*
* @author
*/
public class Principal {
public static void main(String[] args){
Set<Hotel> cjsh = new HashSet<Hotel>();
SortedSet<Hotel> cjssplaya = new TreeSet<Hotel>();
SortedSet<Hotel> cjssmontana = new TreeSet<Hotel>();
SortedSet<Hotel> cjssrural = new TreeSet<Hotel>();
Random rnd=new Random();
Scanner sc=new Scanner(System.in);
int eleccion=0;
for(int i=0; i<12; i++){
int n=rnd.nextInt(3);
Hotel h= new Hotel(i+1,n,(int)(rnd.nextDouble()*110+41));
h.setNumZona(n);
cjsh.add(h);
if(h.getNumZona()==0){
cjssplaya.add(h);
}else if(h.getNumZona()==1){
cjssmontana.add(h);
}else{
cjssrural.add(h);
}
}
System.out.println("Hoteles en el conjunto: "+cjsh.toString());
System.out.println("Hoteles zona playa (ordenados por precio): "+cjssplaya.toString());
System.out.println("Hoteles zona montaña (ordenados por precio): "+cjssmontana.toString());
System.out.println("Hoteles zona rural (ordenados por precio): "+cjssrural.toString());
do{
System.out.println("Elije zona de hotel. (1)Playa, (2)Montaña, (3)Rural");
eleccion=sc.nextInt();
if(eleccion==1){
System.out.println("Elección: 1");
System.out.println("Hoteles en el conjunto para la selección \"Playa\" ordenados por precio: ");
System.out.println(cjssplaya.toString());
}else if(eleccion==2){
System.out.println("Elección: 2");
System.out.println("Hoteles en el conjunto para la selección \"Montaña\" ordenados por precio: ");
System.out.println(cjssmontana.toString());
}else if(eleccion==3){
System.out.println("Elección: 3");
System.out.println("Hoteles en el conjunto para la selección \"Rural\" ordenados por precio: ");
System.out.println(cjssrural.toString());
}else{
System.out.println("Elección incorrecta. Vuelva a elegir");
}
}while(eleccion<1 || eleccion>3);
}
}