Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: MrClassic en 17 de Enero 2015, 21:43
-
Cordial saludo,
Entrega nº36 del curso "Aprender programación Java desde cero".
Quedo en espera de Correcciones y/o sugerencias.
Gracias.
public class Rueda{
/*Properties*/
private String tipo;
private double grosor;
private double diametro;
private String marca;
/*Constructor*/
public Rueda(){
tipo = "No definido";
grosor = 0;
diametro = 0;
marca = "No definido";
}
/*Setters*/
public void setTipo(String valTipo){
tipo = valTipo;
}
public void setGrosor(double valGrosor){
grosor = valGrosor;
}
public void setDiametro(double valDiametro){
diametro = valDiametro;
}
public void setMarca(String valMarca){
marca = valMarca;
}
/*Getters*/
public String getTipo(){
return tipo;
}
public double getGrosor(){
return grosor;
}
public double getDiametro(){
return diametro;
}
public String getMarca(){
return marca;
}
public void comprobDiametro(){
/*a*/
if (diametro > (1.4)) {
System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
}
else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro >= (0.8))){
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
}
else{
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
}
/*b*/
if ((diametro > (1.4) && grosor < (0.4)) || ((diametro < (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
}
}
}
-
Hola MrClassic
Tu clase Rueda está muy bien. Tu código está bien estructurado siguiendo las convenciones:
Declaración de atributos
Inicialización de atributos
Setters y getters de los atributos
Y al final método comprobDiametro (aunque este nombre no es explicativo pues además del diámetro se comprueba el grosor - el nombre propuesto en la lección era más adecuado)
En un ejercicio anterior ya te comenté que inicializar los atributos a sus valores por defecto era:
String inicializar a cadena vacía
int inicializar a cero
Esto es lo que se hace en el constructor por defecto. Si necesitamos algo más utilizaremos constructores con parámetros (lo verás más adelante)
Tu método comprobDiametro está bien construido, pero te has perdido algunos detalles en las condiciones:
He colocado las diferencias como comentarios.
public void comprobDiametro(){
/*a*/
if (diametro > (1.4)) {
System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
}
else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro >= (0.8))){
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
}
/** La condición anterior debía ser:
else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro > (0.8))){*/
else{
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
}
/*b*/
if ((diametro > (1.4) && grosor < (0.4)) || ((diametro < (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
}
/**La concición anterior debía ser:
if ((diametro > (1.4) && grosor < (0.4)) || ((diametro <= (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){ */
}
La importancia del operador adecuado tiene solo la importancia que se le debe dar. Por ejemplo un kilómetro comparada con la circunferencia de la Tierra podemos decir que es un error despreciable. En cambio un miligramo de diferencia en una dosificación de laboratorio puede ser abismal.
Saludos
-
Buenas:
Adjunto el código del ejercicio, las pruebas me han funcionado y siguiendo la línea del curso, entiendo que es mejor ceñirse a la resolución de las cuestiones planteadas
paso a paso para que no nos lleve a confusiones.
No se si mi planteamiento es la mejor de las soluciones.
Pero un antiguo profesor me indicó que si la redacción es clara y las pruebas son correctas, tenemos el problema resuelto al menos en un porcentaje muy elevado.
Un saludo
public class Rueda
{
// instance variables - replace the example below with your own
private String tipo;
private double grosor;
private double diametro;
private String marca;
/**
* Constructor for objects
*/
public Rueda()
{
// initialise instance variables
tipo = "";
grosor = 0;
diametro = 0;
marca = "";
}
/* SETTERS */
public void setTipo (String valorTipo) { tipo = valorTipo; }
public void setGrosor(double valorGrosor) { grosor = valorGrosor; }
public void setDiametro (double valorDiametro) { diametro = valorDiametro; }
public void setMarca(String valorMarca) { marca = valorMarca; }
/* GETTERS */
public String getTipo() { return tipo; }
public double getGrosor() { return grosor; }
public double getDiametro() { return diametro; }
public String getMarca() { return marca; }
/*Metodo tipo procedimiento*/
public void comprobarDimensiones() {
if (diametro > 1.4 ) {
System.out.println("La rueda es para un vehículo grande" );
}
// diametro mayor o igual que 1,4 o mayor que 0.8
else if (diametro <= 1.4 || diametro > 0.8 ) {
System.out.println("La rueda es para un vehículo mediano" );
}
else {
System.out.println("La rueda es para un vehículo pequeño" );
}
if (diametro > 1.4 && grosor < 0.4 ) {
System.out.println("El grosor de la rueda es inferior al recomendado (1)" );
}
else if (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
System.out.println("El grosor de la rueda es inferior al recomendado (2)" );
}
}
}
-
Hola Francisco, tu ejercicio es correcto y está bien planteado. Sí hay algo que merece ser comentado y mejorado. La condición:
Si el diámetro es superior a 1.4 con un grosor inferior a 0.4, ó si el diámetro es menor o igual a 1.4 pero mayor que 0.8, con un grosor inferior a 0.25, deberá mostrarse por consola el mensaje “El grosor para esta rueda es inferior al recomendado”.
Es una sola condición. No es adecuado escribirla como la has escrito:
if (diametro > 1.4 && grosor < 0.4 ) {
System.out.println("El grosor de la rueda es inferior al recomendado (1)" );
}
else if (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
System.out.println("El grosor de la rueda es inferior al recomendado (2)" );
}
Es más simple y mejor código una expresión única del tipo:
if (((diametro > 1.4)&&(grosor < 0.4))||(((diametro <= 1.4)&&(diametro > 0.8))&&(grosor < 0.25)))
{System.out.println (" El grosor para esta rueda es inferior al recomendado ");}
De resto todo bien. Saludos
-
Completamente de acuerdo y tomo muy buena nota.
Lo cierto es que no estaba completamente seguro de hacerlo así.
Vamos que dudaba si hacerlo o no, y al final decidí que no. ( mal hecho )
Así que lo planteé de ese modo que hemos visto. ( mi trampa )
Pero coincido con el planteamiento que indicas a pies juntillas.
Un saludo y gracias
-
Hola que tal Fco gomez., soy nuevo en el foro y estoy aprendiendo igual que todos ustedes,,, note un posible error en tu sentencia y porfavor corrigeme si me equivoco ya que tmb estoy aprendiendo...
has puesto un operador || "or" en la primer sentencia "if else" cuando deberia de ser un operador logico "and" es decir el &&.
lo marco en rojo para que veas donde es...
/*Metodo tipo procedimiento*/
public void comprobarDimensiones() {
if (diametro > 1.4 ) {
System.out.println("La rueda es para un vehículo grande" );
}
// diametro mayor o igual que 1,4 o mayor que 0.8
else if (diametro <= 1.4 || diametro > 0.8 )
System.out.println("La rueda es para un vehículo mediano" );
}
else {
System.out.println("La rueda es para un vehículo pequeño" );
}
-
Cordial Saludo,
Presento Correcciones del ejercicio.
Gracias.
public class Rueda{
/*Properties*/
private String tipo;
private double grosor;
private double diametro;
private String marca;
/*Constructor*/
public Rueda(){
tipo = "No definido";
grosor = 0;
diametro = 0;
marca = "No definido";
}
/*Setters*/
public void setTipo(String valTipo){
tipo = valTipo;
}
public void setGrosor(double valGrosor){
grosor = valGrosor;
}
public void setDiametro(double valDiametro){
diametro = valDiametro;
}
public void setMarca(String valMarca){
marca = valMarca;
}
/*Getters*/
public String getTipo(){
return tipo;
}
public double getGrosor(){
return grosor;
}
public double getDiametro(){
return diametro;
}
public String getMarca(){
return marca;
}
public void comprobDiametro(){
/*a*/
if (diametro > (1.4)) {
System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
}
else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro > (0.8))){
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
}
else{
System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
}
/*b*/
if ((diametro > (1.4) && grosor < (0.4)) || ((diametro <= (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
}
}
}