|
|
|
|
Strumenti |
10-11-2007, 18:01 | #1 |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
[Java] Programmino
Salve gente, sono alle prime armi con Java...
questo programma mi da problemi e non riesco proprio a capire perchè... Ho creato un proggetto ci ho messo dentro 2 classi in 2 file: il main e la classe PrimaClasse(che fantasia è?). Codice:
public class PrimaClasse { int x; String pippo; void stampa(int c) { System.out.println(+x);System.out.println(+ c);}; void stampaChar(String a) {System.out.println( pippo); System.out.println(a);}; static void stampaIntero(int k) {System.out.println("random ="+k);}; } Questo è il main Codice:
import java.util.*; public class Main1 { public static void main(String args[]) { int k; Random rand = new Random(); k = rand.nextInt(100)+1; stampaIntero(k); PrimaClasse p = new PrimaClasse(); p.x=19; p.stampa(2); p.pippo = "ciao"; p.stampaChar("stronzo"); } } so che è una stupidaggine ma non riesco proprio a venirne a capo...
__________________
C'è qualcuno che muove i fili di tutto... |
10-11-2007, 18:11 | #2 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
|
|
10-11-2007, 18:18 | #3 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 3567
|
... non hai creato un oggetto della classe.
PrimaClasse oggetto = new PrimaClasse(); oggetto.stampaIntero(k); edit: visto ora..l'hai creato..basta che sposti p.stampaIntero(k); sotto la creazione di p Bello il "ciao stronzo"
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W Il miglior topic di sempre Ultima modifica di D3stroyer : 10-11-2007 alle 18:20. |
10-11-2007, 18:20 | #4 | |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Quote:
Il giochetto è : ho una funzione printf se dichiaro una funzione stampa di tipo static
__________________
C'è qualcuno che muove i fili di tutto... |
|
10-11-2007, 18:21 | #5 |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
nono senza i ";" mi da un casino di errori
__________________
C'è qualcuno che muove i fili di tutto... |
10-11-2007, 18:22 | #6 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 3567
|
mmm, una funzione dentro un oggetto può essere richiamata senza un oggetto?
a me non sembra sensata come cosa.
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W Il miglior topic di sempre Ultima modifica di D3stroyer : 10-11-2007 alle 18:28. |
10-11-2007, 18:45 | #7 | |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Quote:
Codice:
import com.bruceeckel.simpletest.*; import java.util.*; public class MathOps { static Test monitor = new Test(); // Shorthand to print a string and an int: static void printInt(String s, int i) { System.out.println(s + " = " + i); } // Shorthand to print a string and a float: static void printFloat(String s, float f) { System.out.println(s + " = " + f); } public static void main(String[] args) { // Create a random number generator, // seeds with current time by default: Random rand = new Random(); int i, j, k; // Choose value from 1 to 100: j = rand.nextInt(100) + 1; k = rand.nextInt(100) + 1; printInt("j", j); printInt("k", k); i = j + k; printInt("j + k", i); /* <---- è qui che fa la stessa cosa:D*/ i = j - k; printInt("j - k", i); i = k / j; printInt("k / j", i); i = k * j; printInt("k * j", i); i = k % j; printInt("k % j", i); j %= k; printInt("j %= k", j); // Floating-point number tests: float u,v,w; // applies to doubles, too v = rand.nextFloat(); w = rand.nextFloat(); printFloat("v", v); printFloat("w", w); u = v + w; printFloat("v + w", u); u = v - w; printFloat("v - w", u); u = v * w; printFloat("v * w", u); u = v / w; printFloat("v / w", u); // the following also works for // char, byte, short, int, long, // and double: u += v; printFloat("u += v", u); u -= v; printFloat("u -= v", u); u *= v; printFloat("u *= v", u); u /= v; printFloat("u /= v", u); monitor.expect(new String[] { "%% j = -?\\d+", "%% k = -?\\d+", "%% j \\+ k = -?\\d+", "%% j - k = -?\\d+", "%% k / j = -?\\d+", "%% k \\* j = -?\\d+", "%% k % j = -?\\d+", "%% j %= k = -?\\d+", "%% v = -?\\d+\\.\\d+(E-?\\d)?", "%% w = -?\\d+\\.\\d+(E-?\\d)?", "%% v \\+ w = -?\\d+\\.\\d+(E-?\\d)??", "%% v - w = -?\\d+\\.\\d+(E-?\\d)??", "%% v \\* w = -?\\d+\\.\\d+(E-?\\d)??", "%% v / w = -?\\d+\\.\\d+(E-?\\d)??", "%% u \\+= v = -?\\d+\\.\\d+(E-?\\d)??", "%% u -= v = -?\\d+\\.\\d+(E-?\\d)??", "%% u \\*= v = -?\\d+\\.\\d+(E-?\\d)??", "%% u /= v = -?\\d+\\.\\d+(E-?\\d)??" }); } } ///:~
__________________
C'è qualcuno che muove i fili di tutto... |
|
10-11-2007, 19:04 | #8 |
Member
Iscritto dal: Oct 2007
Messaggi: 55
|
ok è static, significa che non è necessario creare un oggetto ma comunque per invocarla devi scrivere:
Codice:
PrimaClasse.stampaIntero(k); Se poi ancora non va, vuol dire che l'intero oggetto deve essere di tipo static per fornire metodi static all'esterno...ma questo non lo ricordo bene. Se non va come ho detto sopra prova a dichiarare static tutta la classe PrimaClasse |
10-11-2007, 19:21 | #9 | |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 3567
|
Quote:
Si, effettivamente ha ragione Hiro.
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W Il miglior topic di sempre Ultima modifica di D3stroyer : 10-11-2007 alle 19:37. |
|
11-11-2007, 00:43 | #10 | |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Quote:
poi nel main usa quei metodi(stampaInt etc) senza la dot notation in quanto i metodi static non sono istanza di oggetti.
__________________
C'è qualcuno che muove i fili di tutto... |
|
11-11-2007, 01:19 | #11 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2760
|
Non è la stessa cosa perchè nel tuo esempio il metodo richiamato si trova nella stessa classe del metodo che lo richiama. Ha ragione Hiro
|
11-11-2007, 08:29 | #12 |
Member
Iscritto dal: Oct 2007
Messaggi: 55
|
ah...ma allora qualcuno mi ha letto
Ho dato la soluzione, ma The Puppet non ha detto se l'ha letta, l'ha provata, ecc... Era abbastanza semplice, e comunque si tratta di nozioni base di java, e non vedo il motivo per cui dobbiate disquisire sull'argomento si fa così e basta p.s.: un po' di teoria a volte fa bene... @The Puppet p.p.s: con tutto quello che vuoi... ma è improponibile chiamare un metodo di una classe esterna a crudo, senza far riferimento a quale classe appartiene |
11-11-2007, 10:11 | #13 |
Senior Member
Iscritto dal: Oct 2001
Città: Firenze
Messaggi: 585
|
La notazione "NomeClasse.chiamataMetodo()" per i metodi statici è indispensabile affinché il compilatore possa distinguere quale metodo si sta invocando nel caso in cui lo stesso nome di metodo ( chiamataMetodo() ) fosse implementato in maniera statica in due classi diverse, come ad esempio NomeClasse1 e NomeClasse2.
Se tu invocassi : chiamataMetodo() senza specificare di quale classe come farebbe il compilatore a capire a quale ti stai riferendo?
__________________
http://www.gnu.org/philosophy/no-wor...hments.it.html http://gprime.net/flash/postingandyou.php [1510 kB] |
11-11-2007, 12:03 | #14 | |
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Quote:
grazie Tadde , scusa Hiro non avevo capito ora ho messo il nome della classe prima del metodo e non mi da errori quando compilo il file però... quando metto compile project mi dice : there are no source files which require to be compiled Scusate se sto sempre qui a chiedere ma non so a chi altro rivolgermi
__________________
C'è qualcuno che muove i fili di tutto... |
|
13-11-2007, 16:11 | #15 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12091
|
ehmmm..
hai la sign *lievemente* irregolare mi sa
__________________
|
13-11-2007, 16:49 | #16 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
__________________
GPU Compiler Engineer |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:20.