Autor Tema: Non-static variable cannot be referenced from a static context java  (Leído 12675 veces)

mily

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
tengo 3 clases en el paquete exercise12 ,me aparece un error en la clase testdriver y no se por que en las otras clases no tengo ningun error :
package exercise12;


public class TestDriver {
Time time1;
Time time2;
   public static void main(String[] args) {
      
      
      // compute the duration from 1:20:30 to 2:30:40
      time1 = new Time(1, 20, 30);
      time2 = new Time(2, 30, 40);
      System.out.println("time1    = " + time1 + "\ntime2    = " + time2);
      System.out.println("duration = " + time1.computeDuration(time2));
      System.out.println();
      
      // compute the duration from 1:45:10 to 2:30:05
      time1 = new Time(1, 45, 10);
      time2 = new Time(2, 30, 05);
      System.out.println("time1    = " + time1 + "\ntime2    = " + time2);
      System.out.println("duration = " + time1.computeDuration(time2));
      System.out.println();

      WorldTime worldTime1;
      WorldTime worldTime2;
      
      // compute the duration from 1:20:30 GMT+0 to 2:30:40 GMT+3
      worldTime1 = new WorldTime(1, 20, 30, 0);
      worldTime2 = new WorldTime(2, 30, 40, 3);
      System.out.println("worldTime1 = " + worldTime1 + "\nworldTime2 = " + worldTime2);
      System.out.println("duration   = " + worldTime1.computeDuration(worldTime2));
      System.out.println();
      
      // compute the duration from 1:45:10 GMT+0 to 2:30:05 GMT+3
      worldTime1 = new WorldTime(1, 45, 10, 0);
      worldTime2 = new WorldTime(2, 30, 05, 3);
      System.out.println("worldTime1 = " + worldTime1 + "\nworldTime2 = " + worldTime2);
      System.out.println("duration   = " + worldTime1.computeDuration(worldTime2));
   }
}
« Última modificación: 02 de Septiembre 2014, 18:39 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:ayuda con netbeans,tengo este error y no se porque
« Respuesta #1 en: 31 de Marzo 2014, 21:10 »
Hola mily, para poder revisarlo pega el código de las otras clases, si no no se puede compilar. Para pegar el código, usa el botón # que aparece en el editor del foro y pega el código entre las etiquetas [ code ] ... [ / code] que te aparecerán (comprueba que se muestra como código pulsando el botón previsualizar antes de darle al botón publicar). Saludos.
Responsable de departamento de producción aprenderaprogramar.com

mily

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:ayuda con netbeans,tengo este error y no se porque
« Respuesta #2 en: 01 de Abril 2014, 07:39 »
Código: [Seleccionar]
package exercise12;


public class Time {
int hours;
int minutes;
int seconds;

/**
* Creates a Time object with the given hours, minutes, and seconds.
*/
public Time(int hours, int minutes, int seconds) {
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
}

/**
* Returns the time duration between this time and the given nextTime.
*/
public Time computeDuration(Time nextTime) {

// convert this time and nextTime to seconds
int secs = (3600 * hours) + (60 * minutes) + seconds;
int nextSecs = (3600 * nextTime.hours) + (60 * nextTime.minutes) +
nextTime.seconds;

// compute duration in seconds
int durationSecs = Math.abs(nextSecs - secs);

// convert duration seconds to hours, minutes, seconds
int h = durationSecs / 3600;
durationSecs = durationSecs % 3600;  // remainder of seconds in an hour
int m = durationSecs / 60;
int s = durationSecs % 60;

// create duration as Time object and return it
Time duration = new Time(h, m, s);
return duration;
}

/**
* Returns this time in the format "hours:MM:SS"
*/
public String toString() {
String s = hours + ":";
if (minutes < 10) s += "0";
s += minutes + ":";
if (seconds < 10) s += "0";
s += seconds;
return s;
}
}

Código: [Seleccionar]
package exercise12;


public class WorldTime extends Time {
int gmtOffsetHours;

/**
* Creates a WorldTime object with the given hours, minutes, seconds, and
* gmtOffsetHours.
*/
public WorldTime(int hours, int minutes, int seconds, int gmtOffsetHours) {
super(hours, minutes, seconds);
this.gmtOffsetHours = gmtOffsetHours;
}

/**
* Returns this world time in the format "hours:MM:SS GMT+h" where h is the
* number of hours offset from GMT.
*/
public String toString() {
return super.toString() + " GMT+" + gmtOffsetHours;
}
}

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:ayuda con netbeans,tengo este error y no se porque
« Respuesta #3 en: 01 de Abril 2014, 09:15 »
El mensaje de error que da es "Non-static variable time1 cannot be referenced from a static context" que indica que has declarado la variable como una variable de clase pero la estás inicializando en un método estático.

Para que te compile basta con declarar la variable dentro del método main así:

Código: [Seleccionar]
public class TestDriver {
    public TestDriver (){
    }
    public static void main(String[] args) {
        Time time1;
        Time time2;
        // compute the duration from 1:20:30 to 2:30:40
        time1 = new Time(1, 20, 30);
        time2 = new Time(2, 30, 40);
        System.out.println("time1    = " + time1 + "\ntime2    = " + time2);
        System.out.println("duration = " + time1.computeDuration(time2));
        System.out.println();

        // compute the duration from 1:45:10 to 2:30:05
        time1 = new Time(1, 45, 10);
        time2 = new Time(2, 30, 05);
        System.out.println("time1    = " + time1 + "\ntime2    = " + time2);
        System.out.println("duration = " + time1.computeDuration(time2));
        System.out.println();

        WorldTime worldTime1;
        WorldTime worldTime2;

        // compute the duration from 1:20:30 GMT+0 to 2:30:40 GMT+3
        worldTime1 = new WorldTime(1, 20, 30, 0);
        worldTime2 = new WorldTime(2, 30, 40, 3);
        System.out.println("worldTime1 = " + worldTime1 + "\nworldTime2 = " + worldTime2);
        System.out.println("duration   = " + worldTime1.computeDuration(worldTime2));
        System.out.println();

        // compute the duration from 1:45:10 GMT+0 to 2:30:05 GMT+3
        worldTime1 = new WorldTime(1, 45, 10, 0);
        worldTime2 = new WorldTime(2, 30, 05, 3);
        System.out.println("worldTime1 = " + worldTime1 + "\nworldTime2 = " + worldTime2);
        System.out.println("duration   = " + worldTime1.computeDuration(worldTime2));
    }
}
Responsable de departamento de producción aprenderaprogramar.com

mily

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:ayuda con netbeans,tengo este error y no se porque
« Respuesta #4 en: 01 de Abril 2014, 20:59 »
ok muchas gracias¡¡  ;D

 

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".