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 25 de Febrero 2017, 17:22
-
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);
}
}
-
Buenas Pepote21, el ejercicio hace lo que se pedía pero hay detalles en el código que se pueden mejorar
Si no has hecho el curso de java desde cero http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 te recomiendo que lo hagas pues ahí se explican o repasan muchos conceptos importantes
Definir el atributo numZona puede ser razonable en algunos casos. No obstante en este caso el ejercicio no lo pide, por ello es preferible ceñirse a lo que dice el ejercicio. El ejercicio se puede resolver sin necesidad de definir numZona
Haces cosas como estas conversiones (int)(rnd.nextDouble()*110+41) que no resultan necesarias
En este hilo puedes ver una forma de diseño alternativa: https://www.aprenderaprogramar.com/foros/index.php?topic=5897.0
Creo que si no has hecho el curso que te he comentado sería recomendable
Salu2