Newsgroup: it.comp.java
Titolo: la prima classe e il primo oggetto... (very idiot newbie warning)

abbiate pieta` di un misero tapino che ha iniziato a guardare java 5
giorni prima della data di consegna del progetto per l'esame ;(( ..
ho scritto 2 boiate per istanziare un oggetto e vederne una variabile ma
il compilatore (`javac *.java') continua a dire che non trova il
constructor... io ho seguito le istruzioni del tutorial sun... sono solo
2 misere classi con 1 misero metodo ciascuna... cosa c'e` che non va...
public class Oggetto {
    int valore;
 
    public Oggetto(int x) {
        this.valore = x;
    }
}
public class Richiamo {
    public void main(String args[]) {
	Oggetto val;
        val = new Oggetto(args[0]);
        System.out.println(val.valore);
    }
}
[leo@linux /home/leo/ffjuser30/sampledir/prova]$ javac *.java
Richiamo.java:9: cannot resolve symbol
symbol  : constructor Oggetto  (java.lang.String)
location: class Oggetto
        val = new Oggetto(args[0]);
              ^
1 error
help!!
-- 
    Pardo
 
http://cs.unibo.it/~lmanca


Il problema principale è che tu hai definito il costruttore per la classe
Oggetto che riceve come parametro in ingresso un tipo int ma nella chiamata
val = new Oggetto( args[0] )  gli stai passando una stringa! ... quindi il
compilatore si aspetta di trovare un costruttore per la classe Oggetto che
riceva in ingresso un oggetto di tipo String.
Quindi dovresti fare la chiamata in questo modo:
try
{
 val = new Oggetto( Integer.parseInt( args[0] ) );
System.out.println(val.valore);  // <----- EMMM .. AJI questo funziona ma
non si fà se programmi ad oggetti :)))
}
catch( NumberFormatException )
{
  System.out.println( "il parametro inserito in ingresso non è un valore
intero valido" );
}
o al limite definire un altro costruttore che accetti come parametro una
stringa e al suo interno effettuare la conversione ...
ciaooo
Dani
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If at first the idea is not absurd then there is no hope for it. - Albert
Einstein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     }
però chiaramente non lo trova....
prova con
Oggetto oggetto = new Oggetto(Integer.parseInt(args[0]))
attenzione che però se args[0] non è un intero viene lanciata un eccezione
di tipo:
NumberFormatException
quindi dovresti gestire la cosa...
ciao marco

grazie vi sono molto grato per la pazienza!!
(l'avevo anche letto che distingue i costruttori per tipo dei 
parametri... che stupido non avevo pensato che il problema era proprio 
quello.. ho pensato solo `wow geniale'.. ;-))
-- 
    Pardo
 
http://pardo.cjb.net
 
    ( BACKUP: 
http://pardo.tsx.org
 )

 System.out.println(val.valore);  // <----- EMMM .. AJI questo funziona ma
vediamo se ho capito, se programmo OO dovrei mettere nella classe di val 
un metodo apposito per printare la variabile?
(scommetto che non ho capito niente....)


 (scommetto che non ho capito niente....)
beh.. in realtà potrebbe essere così, ma in tal caso come sapresti dove 
stamparla (printare è proprio brutto eh ;P )?
Mentre è piu' corretto che ci sia una classe di tipo OutputStream (o uno 
dei suoi parenti, onestamente ora non mi ricordo quale) che è associata 
ad un flusso di output (sia esso un socket che un file che un 
dispositivo di output come la console) che ha un metodo che riceve una 
stringa e la stampa.... sul flusso corretto. Poi per di piu' c'è una 
classe simpatica simpatica che la vm inizializza con la console.... 
System.out :)))
Non sono stato molto chiaro, effettivamente, ma prova a capire lo 
stesso, poi semmai se ne riparla :)
Kali

 (scommetto che non ho capito niente....)
emmmm .. no ... non č proprio cosě ...
Mi riferivo al fatto che non č buona norma nella programmazione OO accedere
direttamente ai campi di un oggetto perchč ne viola il principio
dell'information hiding .. č molto piů elegante e corretto creare un metodo
apposito da invocare e che restituisce il valore di tale campo.
Spero di essermi spiegato bene ....
ciao ciao
Dani
--


     
http://cs.unibo.it/~lmanca
Pardo, il flight simmer????
Giuseppe

 
beh, questo è un problema più serio, non saprei aiutarti :-))
ciao
tityrus

 Giuseppe
Giusto perchè anche tu Giuseppe sei un flight simmer.... (se posso
permettermi di darti del tu..)
ma dimmi con cosa voli???
sei mai in IVAO???
ciao marco


ormai `ex', praticamente, sono mesi che non metto piu` mano ad un
simulatore... sul fronte videoludico sono usciti e stanno per uscire
titoli strategici e RPG che aspettavo da secoli
e in 'sto periodo sono occupatissimo con la programmazione come si puo`
dedurre dal post... se non ci aggiungevano anche un progetto assurdo in
java (1 interprete di 1 linguaggio inventato) avendo fatto solo 4 misere
lezioni di programmazione OO, era meglio!!
-- 
    Pardo
 
http://cs.unibo.it/~lmanca