View Full Version : [Java] Non riesco ad importare java.lang.Math
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
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
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
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
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^^
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.