Foros del Web » Programación para mayores de 30 ;) » Java »

Como puedo ejecutar estos dos metodos desde el main

Estas en el tema de Como puedo ejecutar estos dos metodos desde el main en el foro de Java en Foros del Web. Hola! Tengo los siguientes métodos dentro de una clase. Código: /** * método que evalúa el polinomio p(x) de modo directo */ public double evaluar_directo ...
  #1 (permalink)  
Antiguo 04/03/2012, 05:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 98
Antigüedad: 15 años
Puntos: 2
Como puedo ejecutar estos dos metodos desde el main

Hola! Tengo los siguientes métodos dentro de una clase.
Código:
 /**
     * método que evalúa el polinomio p(x) de modo directo
     */
    public double evaluar_directo (double x) {
        double valor = a[0];
        int n = a.length;
        double y = 0;
        for(int i = 1; i<=n; i++){
            for(int j = 2; j<=i; j++){
            y = y * x;}
            valor = valor +a[i] * y;}
        return valor;
    }

    /**
     * método que evalúa el polinomio p(x) aplicando el algoritmo de Horner
     */
    public double evaluar_Horner (double x) {
        /** A completar por el alumno */
        int n = a.length;
        double valor = a[n];
        for(int i = n-1; i<=0;i--)
            valor = valor * x + a[i];
        return valor;
    }

    /**
     * método que calcula el tiempo en milisegundos de
     * ejecutar 1000 veces la evaluación del polinomio
     * si el parámetro j vale 0, se usa el método directo
     * si el parámetro j no vale 0, se usa el método de Horner
     */
    public void test (double x, int j) {
        double v = 0;
        long t0 = System.currentTimeMillis();
        for (int i=0; i<1000; i++)
            if ( j==0 )
                v = evaluar_directo(x);
            else
                v = evaluar_Horner(x);
        long t1 = System.currentTimeMillis();
        String s = ( j==0 ) ? "evaluar_directo: " : "evaluar_Horner:  ";
        System.out.print(s+"grado = "+grado()+"\tp("+x+")="+v+"\t\ttiempo = "+(t1-t0)+" mseg.\t");
    }
El problema es que tengo que ejecutar el metodo test desde el main pero no se como hacerlo.

En el main escribo test(7,0); y me devuelve el error non-static method cannot be referenced from a static context
Como se podia solucionar este tipo de errores?

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 04/03/2012, 06:46
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 14
Respuesta: Como puedo ejecutar estos dos metodos desde el main

Haciendo esos dos métodos estáticos, así podrás usarlos, ¿no?

public static double evaluar_directo(double x){

//contenido

}

Un saludo.
  #3 (permalink)  
Antiguo 04/03/2012, 07:03
 
Fecha de Ingreso: noviembre-2009
Mensajes: 98
Antigüedad: 15 años
Puntos: 2
Respuesta: Como puedo ejecutar estos dos metodos desde el main

si eso ya lo habia pensado pero creo que no se me permite modificar la cabecera de los metodos
Gracias de todas formas :D
  #4 (permalink)  
Antiguo 04/03/2012, 07:03
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 9 meses
Puntos: 57
Información Respuesta: Como puedo ejecutar estos dos metodos desde el main

Hola sergimbo, que tal.

Tu método "test" debe quedar asi:

Código Java:
Ver original
  1. public String test(double x, int j) {
  2.     //... las otras lineas ...
  3.     /**
  4.      * la ultima linea en vez de imprimir, debes almacenarlo
  5.      * en una variable y luego retornarla
  6.      */
  7.     String r = s+"grado = "+grado()+"\tp("+x+")="+v+"\t\ttiempo = "+(t1-t0)+" mseg.\t";
  8.     return r;
  9. }

y el main , asi:

Código Java:
Ver original
  1. public static void main(String[] args) {
  2.     //"Fdw" es el nombre de la clase
  3.     Fdw objFdw = new Fdw();// creas el objeto "objFdw"
  4.     String resultado = objFdw.test(7,0);//recibes el String "r" enviado de test
  5.     System.out.println(resultado);// imprimes
  6. }


La tarea: Objetos en Java
http://www.codexion.com/tutorialesjava/java/concepts/object.html
http://arantxa.ii.uam.es/~castells/docencia/poo/3-objetos.pdf
  #5 (permalink)  
Antiguo 04/03/2012, 07:10
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 14
Respuesta: Como puedo ejecutar estos dos metodos desde el main

De todas maneras es un procedimiento que no devuelve nada, osea un void...

Yo creo que tienes dos formas de hacerlo.
Partimos de que tienes esas funciones / procedimientos en en otra clase, no sé por ejemplo Calculos();

1) bien los metes como public static NombreFuncion(){}, y ya los puedes usar desde principal public static void main(String[] args)

2) bien los pones como funciones no estáticas y luego en el main haces Calculos c = new Calculos(); y ya llamas a la funcion con c.test(0,7); y si es una funcion que devuelva un tipo de valor pues a=c.evaluar.horner(3);

Puede ser que me equivoque, pero yo creo que es como se tiene que hacer, no?

Yo desde luego lo suelo hacer siempre como 2)

Un saludo!
__________________
Aprendiendo un poco de Java :D
  #6 (permalink)  
Antiguo 04/03/2012, 07:21
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 9 meses
Puntos: 57
De acuerdo Respuesta: Como puedo ejecutar estos dos metodos desde el main

Hola caruizj, yo tambien.
  #7 (permalink)  
Antiguo 04/03/2012, 07:27
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 14
Respuesta: Como puedo ejecutar estos dos metodos desde el main

Cita:
Iniciado por gebremswar Ver Mensaje
Hola caruizj, yo tambien.
Jeje, es que no sé gebremswar, me da cosa ayudar a los demás porque yo soy bastante principiante aún y no sé si dando ese consejo hago bien o no, pero vamos, yo creo que se tiene que poder hacer así.

A ver si nos dice si le ha funcionado :D
__________________
Aprendiendo un poco de Java :D
  #8 (permalink)  
Antiguo 04/03/2012, 08:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 98
Antigüedad: 15 años
Puntos: 2
Respuesta: Como puedo ejecutar estos dos metodos desde el main

Muchas gracias a los dos!! me ha funcionado!! Sois geniales ^^
  #9 (permalink)  
Antiguo 05/03/2012, 15:38
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 9 meses
Puntos: 57
Información Respuesta: Como puedo ejecutar estos dos metodos desde el main

En realidad hay muchas maneras de hacer las cosas, y mas aun sin son problemas básicos como lo que intentaba hacer sergimbo. La opción mas rápida y simple (al menos para mi) de hacerlo sin modificar mucho su código es la solución que propuse y es la misma que mencionas en tu punto 2) mi estimado caruizj.

Cita:
Iniciado por caruizj Ver Mensaje
Jeje, es que no sé gebremswar, me da cosa ayudar a los demás porque yo soy bastante principiante aún y no sé si dando ese consejo hago bien o no, pero vamos, yo creo que se tiene que poder hacer así.
No hay que ser un gurú para poder dar una respuesta, y pues los foros estan hechos para discutir o no?.

Yo soy nuevo en el foro y pues hace poco me animé a responder a los temas (Espero seguir haciéndolo).

Cita:
Iniciado por caruizj Ver Mensaje
A ver si nos dice si le ha funcionado :D
Pues ya lo dijo. y esta contento.

Que bueno que solucionaste tu problema sergimbo saludos y a ti también caruizj.

Etiquetas: clase, main, metodos, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:12.