Newsgroup: it.comp.java
Titolo: Return di un valore tra funzioni di DUE CLASSI DIFFERENTI

Salve a tutti,
avrei bisogno di leggere un dato che viene ritornato da una funzione che è
in un'altra classe.
Sono riuscito senza problemi a farlo se le due funzioni in questione sono
nella stessa classe, ma con due classi diverse non so proprio che fare!
Ecco il codice...qualcuno mi potrebbe aiutare? Devo memorizzare in y il
valore che mi ritorna la funzione sotto.
Anticipatamente ringrazio
public class ProvaFunzioni
{
    public ProvaFunzioni()
    {
        int x=2;
        int y;
        //qui mi dà errore
        y = new funzione(x);
    }
    public static void main (String args[])
    {
        new ProvaFunzioni();
    }
}
// altra classe
class funzione {
    public int funzione(int x)
    {
        // stampa 2
        System.out.println(x);
        // ritorna 3
        return(3);
    }
}

 nella stessa classe, ma con due classi diverse non so proprio che fare!
Se la funzione č statica, AltraClasse.funzione(parametri), altrimenti
AltraClasse ac = new AltraClasse(parametri);
valore = ac.funzioneparametri);
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

     {
ERORRISSIMO.
I costruttori di una classe non possono avere nessun tipo di dato di
ritorno, neanche VOID.
La sintassi giusta è :
class funzione{
    public funzione(int x){ // Nota la mancanza del tipo di ritorno
        -------
        --------
    }
}
Per risolvere il tuo problema hai due strade :
1 - dentro la classe funzione metti un metodo es. : calcola(int x);
es
class Funzione{
    // In questo caso non serve riscrivere il costruttore
    // dato che non deve fare nulla di particolare
    // quello di default ci va più che bene
    // N.B. Impara a usare lo standar dei nomi
    // che vuole la prima lettera di una classe Maiuscola
    // i nomi delle variabili minuscole, etc.
    // questo è quello che invece ci serve
    public int calcola(int x){
        // Quì esegui i tuoi calcoli
        return risultato;
    }
}
// Il costruttore di ProvaFunzioni a questo punto diverrà così
    public ProvaFunzioni()
    {
        int x=2;
        int y;
        // Questo è come va usata la classe
        Funzione f = new Funzione();
        y = f.calcola(x);
    }
2 : Altra possibilià e quella di dichiarare il metodo statico quindi puoi
utilizzarlo senza la necessità di istanziarlo
es :
class Funzione{
    public static int calcola(int x){    // nota la dicitura static
        // Quì esegui i tuoi calcoli
        return risultato;
    }
}
// Il costruttore di ProvaFunzioni a questo punto diverrà così
    public ProvaFunzioni()
    {
        int x=2;
        int y;
        y = Funzione.calcola(x);
    }
P.S. sai cosa significa static?
Ciao.


Non molto bene...potresti spiegarmi?
Grazie.


Un metodo od un campo di una classe, definiti static, sono comuni ed
unici per tutte le istanze della classe. Vale a dire, per i campi, che
se ho:
public class Example
{
    public static String staticField="";
}
e faccio:
public class Test
{
    public static void main(String[] args)
    {
        Example oneExample=new Example();
        Example otherExample=new Example();
        otherExample.staticString="test";
        System.out.println(oneExample.staticField);
        System.out.println(otherExample.staticField):
        System.out.println(Example.staticField);
    }
}
mi stampa 3 volte "test".
Per quel che riguarda i metodi, come già ti dovrebbe aver suggerito
l'ultima isttruzione della classe Test, un'importante conseguenza del
dichiarare static un metodo, è che lo puoi richiamare senza avere
un'istanza della classe.
Ad esempio, se ha:
public class Example
{
    static String staticMethod()
    {
        return "test";
    }
}
e faccio:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println(Example.staticMethod());
    }
}
mi stampa "test".
Naturalmente, se non avessi dichiarato static il metodo od il campo,
il compilatore si sarebbe incazzato (non-static method staticMethod
cannot be referenced from a static context)...
HTH,
Mauri.
-- 
La forza di gravità è un falso mito,
è la Terra che succhia!