PDA

View Full Version : [Java] Non riesco ad importare java.lang.Math


AngeL)
30-05-2007, 21:41
stasera ho iniziato a leggere qualcosa sul java, quindi abbiate pietą :D
sto scrivendo delle classi che rappresentino figure piane per vedere se ho capito bene le classi, l'ereditarietą, i costruttori, ecc.ecc. e mi sono trovato davanti ad un problema;

all'inizio del file Square.java ho:

import java.lang.Math.*;

public class Square {
...
}

ma se uso una funzione qualsiasi della classe java.lang.Math (ad es. sqrt) mi dice:

C:\java>javac MyProg.java
.\Square.java:19: cannot find symbol
symbol : method sqrt(double)
location: class Square
lato = sqrt(area);
^
1 error
grazie a chiunque mi aiuterą, e scusate per la domanda niubba :)

AnonimoVeneziano
30-05-2007, 21:50
stasera ho iniziato a leggere qualcosa sul java, quindi abbiate pietą :D
sto scrivendo delle classi che rappresentino figure piane per vedere se ho capito bene le classi, l'ereditarietą, i costruttori, ecc.ecc. e mi sono trovato davanti ad un problema;

all'inizio del file Square.java ho:

import java.lang.Math.*;

public class Square {
...
}

ma se uso una funzione qualsiasi della classe java.lang.Math (ad es. sqrt) mi dice:

C:\java>javac MyProg.java
.\Square.java:19: cannot find symbol
symbol : method sqrt(double)
location: class Square
lato = sqrt(area);
^
1 error
grazie a chiunque mi aiuterą, e scusate per la domanda niubba :)

devi chiamare Math.sqrt() , non sqrt() e basta .

sqrt() č una funzione statica della classe Math, benvenuto nell' OOP :p

AngeL)
30-05-2007, 21:56
devi chiamare Math.sqrt() , non sqrt() e basta .

sqrt() č una funzione statica della classe Math
con Math.sqrt() funziona, grazie :)

ma funzione statica vuol dire che ne viene creata una per tutte le istanze dell'oggetto? o quelle erano le variabili? :mc:
benvenuto nell' OOP :pNon avevo visto il tappeto davanti alla porta >_>

AnonimoVeneziano
30-05-2007, 22:01
con Math.sqrt() funziona, grazie :)

ma funzione statica vuol dire che ne viene creata una per tutte le istanze dell'oggetto? o quelle erano le variabili? :mc:

Una funzione statica č una funzione che č chiamabile semplicemente specificando il nome della classe senza dover instanziare un oggetto specifico di quella classe per poterla usare.

Come regola le funzioni statiche possono usare solo attributi (variabili ) locali o statici (attributi accessibili, come le funzioni statiche, senza dover instanziare la classe e esistenti in unica copia condivisa tra tutte le , eventuali, istanze della classe) .

Il metodo main() di una classe java tanto per essere precisi č definito come "public static" , quindi č un metodo statico che la JVM fa partire senza instanziare un oggetto specifico della classe che lo contiene.

Ciao

AngeL)
30-05-2007, 22:04
Una funzione statica č una funzione che č chiamabile semplicemente specificando il nome della classe senza dover instanziare un oggetto specifico di quella classe per poterla usare.

Come regola le funzioni statiche possono usare solo attributi (variabili ) locali o statici (attributi accessibili, come le funzioni statiche, senza dover instanziare la classe e esistenti in unica copia condivisa tra tutte le , eventuali, istanze della classe) .

Il metodo main() di una classe java tanto per essere precisi č definito come "public static" , quindi č un metodo statico che la JVM fa partire senza instanziare un oggetto specifico della classe che lo contiene.

Ciao
adesso ho capito! grazie mille per la spiegazione! :)

^TiGeRShArK^
30-05-2007, 23:58
Per fare le cose un tantino + decenti se stai usando una versione di Java >= 5 allora puoi usare lo static import:

import static java.lang.Math.*;

....

double r = sqrt(PI * 2);

io penso che sia una vera e propria manna dal cielo :D

AngeL)
31-05-2007, 07:34
Per fare le cose un tantino + decenti se stai usando una versione di Java >= 5 allora puoi usare lo static importcosa cambia? :confused:
comunque ho installato il jdk 6.0_01 ma in programmi\java ho anche il jre 6.0_01

^TiGeRShArK^
31-05-2007, 08:35
cambia che anzikč scrivere ogni volta Math.sqrt(), Math.cos(), Math.PI puoi scrivere semplicemente sqrt(), cos(), PI.
E se hai molte funzioni matematiche č MOLTO + comodo :p

AngeL)
31-05-2007, 08:59
cambia che anzikč scrivere ogni volta Math.sqrt(), Math.cos(), Math.PI puoi scrivere semplicemente sqrt(), cos(), PI.
E se hai molte funzioni matematiche č MOLTO + comodo :p

ok :)
grazie a tutti e due^^