/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema al llamar a una funcion

 
      Índice del Foro elrincondelc.com -> Java
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
inu



Registrado: 06 Mar 2007
Mensajes: 75

MensajePublicado: 27/10/2007 2:47 am
Título: Problema al llamar a una funcion

Hola a todos!

Soy nueva en este lenguaje, y estoy desperada Crying or Very sad Crying or Very sad xq llamo a una funcion y me da error.

este es el codigo:
Código:

import java.io.*;
import java.lang.*;
class CarTest {
    String v;//r, c, a, h, C;
    float velocitat(){
     
      File archivo = null;
      try {
                        archivo = new File ("prova.txt");
         String linea;
                        int velo;
         FileReader fr = new FileReader (archivo);
         BufferedReader br = new BufferedReader(fr);
         while((linea=br.readLine())!=null){
            System.out.println(linea);
                                 velo = linea.indexOf("v");
         v = linea.substring(velo+1,5);
                        float n=Double.valueOf(v).floatValue();
                        return n;
                        }
      }
      catch(IOException e){
                    System.out.println(e);
                }
                 
   }
public static void main(String[] args){
    float res;
    res = velocitat();
    System.out.println(res);
}
}

el error que me da es el siguiente:

Compiling 1 source file to C:\Documents and Settings\Dani\CarTest1\build\classes

C:\Documents and Settings\Dani\CarTest1\src\cartest1\Main.java:29: non-static method velocitat() cannot be referenced from a static context

res = velocitat();

1 error

BUILD FAILED (total time: 0 seconds)

Y no entiendo xq he provado mil cosas y nada a ver si alguien puede ayudarme.

Gracias.
Volver arriba
grandzam



Registrado: 10 Feb 2005
Mensajes: 184
Ubicación: Guadalupe, Zacatecas, México

MensajePublicado: 27/10/2007 10:26 am
Título:

Hola, si lo que sucede es que el método main es estático, y por eso te da error, no es que este mal el main, sino lo que sucede es que tienes que instanciar tu clase para poder usar ese método. Otra cosa que podrías hacer es hacer el método velocitat estático, sin embargo no te lo recomiendo mucho porque tendrías otro error, la variable String v entonces también debería ser estática. Otro error que yo veo es que el método velocitat retorna un valor flotante el cuál estas retornando dentro del try. Lo cuál es incorrecto.

Aca te dejo el programa con algunas correcciones para que compile.

Código:
import java.io.*;
import java.lang.*;
class CarTest {
    String v;//r, c, a, h, C;
    float velocitat(){
      float n=0;//Agregado
      File archivo = null;
      try {
         archivo = new File ("prova.txt");
         String linea;
         int velo;
         FileReader fr = new FileReader (archivo);
         BufferedReader br = new BufferedReader(fr);
         while((linea=br.readLine())!=null){
            System.out.println(linea);
            velo = linea.indexOf("v");
            v = linea.substring(velo+1,5);
            n=Double.valueOf(v).floatValue();         
         }//fin while
      }//fin try
      catch(IOException e){
         System.out.println(e);
     }
      return n; //Agregado
   }
public static void main(String[] args){
    float res;
    CarTest test = new CarTest();//Instanciación
    res = test.velocitat(); //agregado-Usando el nuevo objeto test con el método velocitat()
    System.out.println(res);
}
}
Volver arriba
inu



Registrado: 06 Mar 2007
Mensajes: 75

MensajePublicado: 28/10/2007 2:06 am
Título:

Muchas gracias, pero ahora compila pero no ejecuta es como si no encotrara el main este es el error que me da cuando ejecuto:

exception in thread "main" java.lang.NoClassDef FoundError: carTest1

No entiendo xq el main si que esta.

A ver si alguien puede ayudarme Crying or Very sad Crying or Very sad Crying or Very sad

Gracias.
Volver arriba
grandzam



Registrado: 10 Feb 2005
Mensajes: 184
Ubicación: Guadalupe, Zacatecas, México

MensajePublicado: 28/10/2007 11:24 am
Título:

Tal vez sea porque le cambiaste o le pusiste el nombre carTest1 al archivo y a la clase la dejaste como CarTest, recuerda que el archivo y la clase deben llevar el mismo nombre.

En un archivo puedes tener muchas clases, pero la clase que sea publica debe tener el mismo nombre que el archivo (sin .java).

Si tu clase se llama CarTest1, la clase debe ser:

Código:
public CarTest1{
//Codigo
}
Volver arriba
inu



Registrado: 06 Mar 2007
Mensajes: 75

MensajePublicado: 29/10/2007 4:41 am
Título:

Ok muchas gracias,
Volver arriba
      Índice del Foro elrincondelc.com -> Java
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com