Newsgroup: it.comp.java
Titolo: Help Programma

Salve ragazzi,
studio java da relativamente poco tempo,
e seguendo il mio libro creo i programmini, quelli x prendere mimestichezza
con il linguaggio.
Uno però proprio nn mi riesce, continua a darmi errore.
Ve lo scrivo e poi vi spiego meglio, esso è composto di una classe
principale, e di una che permette il test:
La prima classe è:
public class Dipendente
{
   public Dipendente()
   {
      stipendio = 0;
   }
    public Dipendente(String nomeIniziale,double stipendioIniziale)
    {
      nome = nomeIniziale
      stipendio = stipendioIniziale;
   }
     public String richiamo()
   {
      return "Nome: " + nome + "\n" + "Stipendio " + stipendio + "\n";
   }
    public String nome;
    public double stipendio;
}
La classe di test è:
public class DipendenteTest
{
   public static void main(String[] args)
   {
      Dipendente uno = new Dipendente(mino,10000);
      System.out.println(uno.richiamo());
   }
}
Allora, vi spiego il problema.
Quando compilo la classe di test mi da errore nella riga del costruttore  "
Dipendente uno = new Dipendente(mino,10000); "
Usando Bluej come programma di test, esso è in grado di fornire il tipo di
errore, ma in questo caso nn da aiuti, mi dice solo che c'è un errore e come
oggetto dell'errore mi da tutta la stringa.
Allora ho pensato che l'inghippo fosse nel nome " mino ", ed in entrambe le
classi ho sostituito la " String " con un " double name ", cioè inserivo un
numero e non un nome, ed ho poi variato il programma nei punti in cui
serviva.
BENE, chillu nfam, mi ha stampato quello che chiedevo, ma due numeri
insomma.
Il problema è che a me interessa un costruttore che con due parametri, uno
stringa e uno numero, mi restituisca nome e numero relativo al dipendente.
Il problema è sicuramente nell'uso della stringa, ma qual'è?
Plsssssssssssss, aiutatemi.
Grazie, Cosimo!
--
Saluti!

 Dipendente uno = new Dipendente(mino,10000); "
Il problema sta nel fatto che tu vuoi passare la stringa mino come nome
del dipendente ma devi dichiarla come una variabile oppure passare la
stringa e quindi devi farlo con gli apici doppi:
opzione 1:
String mino = new String("mino");
Dipendente uno = new Dipendente(mino, 10000);
opzione 2:
Dipendente uno = new Dipendente("mino", 10000);
opzione 3:
Dipendente uno = new Dipendente(new String("mino"), 10000);
ciao
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395

 ha scritto nel messaggio
news:pan.2003.02.19....@dot.com...


 
ci sono differenze sostanziali tra la 2 e la 3 ??
ciao
Alesi_27

 ci sono differenze sostanziali tra la 2 e la 3 ??
Nella 2 gli passi una stringa costante (un'array di caratteri in pratica).
Nella 3 gli passi, per valore, il riferimento ad un oggetto stringa


 ci sono differenze sostanziali tra la 2 e la 3 ??
Scusate il post parzialmente inutile, ma la cosa interesserebbe anche a me:
cioč c'č differenza tra passare una string literal e un oggetto String
--
Emanuele Di Saverio
---------------------------------------------
Remove NOSPAM manually for reply
Scusate le vaccate se  ne dico

 cioè c'è differenza tra passare una string literal e un oggetto String
Le risposte a tutte le tue domande sono qui:
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#241669
Quindi e' vero che:
   "mino" != new String("mino")
ma e' anche vero che:
   "mino".equals(new String("mino"))
E nota che con:
   String a = "mino";
   String b = "mi" + "no";
e' anche vero che:
   a == b
- Dario

 Nella 3 gli passi, per valore, il riferimento ad un oggetto stringa
Le stringhe *non* sono array di caratteri. Vedi:
http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html#25726
Anche in 3 la stringa e' costante.
In Java qualsiasi stringa e' immutabile.
La differenza sostanziale fra 2 e 3 e' invece che in 3 il costruttore 
Dipendente si vede arrivare sempre stringhe con rference diversi, mentre 
in 2 qualche volta gli possono arrivare stringhe con reference eguali.
Mi spiego meglio:
Nello scenario 2:
    new Dipendente("mino", 10000);
    new Dipendente("mino", 10000);
    new Dipendente("mino", 10000);
    new Dipendente("mi" + "no", 10000);
le 4 chiamate dei costruttori Dipendente si vedono arrivare sempre una 
stringa con lo stesso reference.
Mentre nello scenario 3:
    new Dipendente(new String("mino"), 10000);
    new Dipendente(new String("mino"), 10000);
    new Dipendente(new String("mino"), 10000);
    new Dipendente(new String("mi") + new Sgtring("no"), 10000);
le 4 chiamate dei costruttori Dipendente si vedono arrivare sempre 
stringhe con reference diverso.
In *entrambi* gli scenari dentro al costruttore
    Dipendente(String s, int n)
e' sempre vero che:
    "mino".equals(s)
- Dario

 Le stringhe *non* sono array di caratteri
La mia è stata un'imprecisione voluta, se hai notato ho detto "in pratica"
semplicemente per far capire a chi me l'ha chiesto.
Ma se a te non sta bene, chiedo venia
