Originariamente inviato da ifts2004
ho risolto...questo è il codice
codice:
class stampa {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int []vec={3,5,6,9};
stampa.stamp(vec);
}
public static void stamp(int[] vec){
for(int i=0;i<vec.length;i++){
System.out.println("i valori sono " +vec[i]); }
}
}
DOMANDE
1).ma allora quando devo chiamare un metodo metto nomeclasse.nomemetodo(variabile od oggetto su cui devo effettuare il metodo)?
2)se metto (int[] vec) al posto di (vec) mi da errore..come mai???
1) No, la notazione NomeClasse.nomeMetodo serve per chiamare i metodi definiti come statici, i quali possono essere richiamati senza istanziare l'oggetto...per farti un esempio pracito
codice:
Class Classe{
private int intero=5;
public int static MetodoA(){return 1;}
public int MetodoB(){return this.intero;}
}
Classe c = new Classe();
int numeroClasse = c.MetodoB();
int numeroStatico = Classe.MetodoA();
è più chiaro?
2) ti dà errore perchè quando richiami un metodo tu passi un paramentro, mentre, scrivendo int[] vec applichi la sintassi per la definizione del parametro del metodo...in altre parole, il tuo codice potrebbe anche essere questo
codice:
class stampa {
public static void main(String[] args) {
int[] nomeCasuale = {3,5,6,9};
stampa.stamp(nomeCasuale);
}
public static void stamp(int[] vec){
for(int i=0;i<vec.length;i++){
System.out.println("i valori sono " +vec[i]); }
}
}
il fatto che il vettore e il paramentro, nel tuo esempio, hanno lo stesso nome, è un caso e può, agli inizi, portarti a fare un po' di confusione tra il passaggio dell'oggetto e la definizione dello stesso
Se hai altri dubbi non esitare a chiedere!