Autor Tema: Java. If else, if else if, decisión condicional. Ejercicio (CU00636B)  (Leído 2255 veces)

Dave17

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Buenas estoy aprendiendo a programar y haciendo este ejercicio la función me compilo bien sin errores, pero al intentar  pedir datos por teclado para probar la función me sale un error  "error: non-static variable diametro cannot be referenced from a static context  "

agradezco su ayuda de antemano.

Código: [Seleccionar]
import java.util.Scanner;

public class Rueda
 {
private String tipo,marca;
private double grosor,diametro;


public  setDiametro(double diametro){this.diametro=diametro;}       
    public setGrosor(double grosor){this.grosor=grosor;}               
    public double getDiametro(){return diametro;}                           
    public double getGrosor(){return grosor;}
   
   
    public static void comprobarDimensiones(double di, double gr)
     
  {
 
if (di > 1.4)
{
System.out.println("La rueda es para un vehiculo grande");
}
else if (di <= 1.4 && di> 0.8)
{
      System.out.println("La rueda es para un vehiculo mediano");
}
else
{
System.out.println("La rueda es para un vehiculo pequeño");
}
 
if (di > 1.4 && gr < 0.25 || di <= 1.4 && di > 0.8 && gr < 0.25)
{
System.out.println("El grosor para esta rueda es inferior al recomendado");
}

  }
 public static void main(String[] args)
  { 
tipo = " ";
marca = " ";
grosor = 0;
diametro = 0;
   Scanner keyboard = new Scanner(System.in);

   System.out.println("Cual es el diametro ?");
   diametro = keyboard.nextDouble();
   System.out.println("Cual es el grosor ?");
   grosor = keyboard.nextDouble();
   comprobarDimensiones(diametro,grosor);

}
   
}

« Última modificación: 09 de Noviembre 2016, 23:18 por pedro,, »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:If else, if else if Java.decisión condicional. Ejercicio (CU00636B)
« Respuesta #1 en: 09 de Noviembre 2016, 07:12 »
Buenos días.

Tu código tiene varios errores:

1º.Crea un constructor para inicializar los atributos.
2º.Los métodos setter son de tipo procedimiento (se usan para dar un valor al atributo y no devuelven ningún valor),por lo que tienes que declararlos como void.
3º.Al método comprobarDimensiones no es necesario que le pases parámetros.
4º.En el método main ya no tienes que declarar los atributos de nuevo sino que debes crear un objeto del tipo Rueda:   
Código: [Seleccionar]
Rueda rueda = new Rueda(); y usar los métodos de la clase con el objeto.

El programa quedaría:

Código: [Seleccionar]
import java.util.Scanner;

public class Rueda
{
    private String tipo,marca;
    private double grosor,diametro;

    public Rueda () {       
        tipo = "";
        grosor = 0;
        diametro = 0;
        marca = "";
    }

    public void setDiametro(double diametro){this.diametro=diametro;}       

    public void setGrosor(double grosor){this.grosor=grosor;}               

    public double getDiametro(){return diametro;}                           

    public double getGrosor(){return grosor;}

    public void comprobarDimensiones()
    {
        if (diametro > 1.4)
        {
            System.out.println("La rueda es para un vehiculo grande");
        }
        else if (diametro <= 1.4 && diametro> 0.8)
        {
            System.out.println("La rueda es para un vehiculo mediano");
        }
        else
        {
            System.out.println("La rueda es para un vehiculo pequeño");
        }

        if (diametro > 1.4 && grosor < 0.25 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25)
        {
            System.out.println("El grosor para esta rueda es inferior al recomendado");
        }
    }

    public static void main(String[] args)
    { 
        Rueda rueda = new Rueda();
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Cual es el diametro ?");
        double entradaDeTeclado = keyboard.nextDouble();
        rueda.setDiametro(entradaDeTeclado);
        System.out.println("Cual es el grosor ?");
        entradaDeTeclado = keyboard.nextDouble();
        rueda.setGrosor(entradaDeTeclado);
        rueda.comprobarDimensiones();

    }
}

Un saludo

Dave17

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re:If else, if else if Java.decisión condicional. Ejercicio (CU00636B)
« Respuesta #2 en: 09 de Noviembre 2016, 16:52 »
Muchas gracias , si esa era mi mayor duda si necesitaba pasarle datos por parámetro o no pero ahora lo entiendo bien , gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".