Newsgroup: it.comp.java
Titolo: problema di compilazione ... forse costrutto non tollerato ?? HELP

ciao a tutti,
sto svolgendo un piccolo esercizio in Java per la simulazione di un mazzo di 
carte.
Sto attualmente testando la classe Carta (che riporto), assieme alle classi 
Seme e Valore.
Provando ad includere un main nella classe Carta, risultano errori "strani", 
logicamente dovrebbe andare (la classe Seme e Valore funzionano, ossia la 
stampa del seme o del valore si visualizza eseguendo solo loro).
Forse è necessario modificare il costrutto usato nella classe Carta 
all'interno del metodo toString ?? ossia stringa=this.seme.toString()+" 
"+this.valore.toString();
ma non avrei altro modo di esprimerlo, credo.
grazie a tutti per l'aiuto !
**********************************************************
**********************************************************
public class Carta {
 //variabili di istanza
 Seme seme;
 Valore valore;
 //costruttori
 //primo costruttore basato su oggetti seme e valore
 public Carta(Seme s, Valore v)
 {
  this.seme=s;
  this.valore=v;
 }
 //secondo costruttore basato su interi seme(primo) e valore(secondo)
 public Carta(int primo, int secondo)
 {
  //può contenere l'eccezione InvalidCardException
  try
  {
   //creo le variabili di istanza della classe Carta
   Seme seme=new Seme(primo);
   Valore valore=new Valore(secondo);
  }
  catch(Exception e)
  {
   e.printStackTrace(); //stampa stringa introdotta nel costruttore 
dell'eccezione
  }
 }
 //metodi di istanza
 public void setSeme(Seme seme)throws InvalidCardException //setta il seme
 {
  Seme.check(seme.s); //controllo che vada bene ed eventuale lancio 
eccezione InvalidCardException
  this.seme=seme;
 }
 public void setValore(Valore valore)throws InvalidCardException //setta il 
valore
 {
  Valore.check(valore.v); //controllo che vada bene ed eventuale lancio 
eccezione InvalidCardException
  this.valore=valore;
 }
 public int getSeme()throws InvalidCardException //ottiene il seme
 {
  Seme.check(this.seme.s); //controllo che vada bene ed eventuale lancio 
eccezione InvalidCardException
  return this.seme.s;
 }
 public int Valore()throws InvalidCardException //ottiene il valore
 {
  Valore.check(this.valore.v); //controllo che vada bene ed eventuale lancio 
eccezione InvalidCardException
  return this.valore.v;
 }
 public String toString() //descrizione della carta con stringa seme e 
stringa valore
 {
  String stringa="";
  stringa=this.seme.toString()+" "+this.valore.toString();
  return stringa;
 }
 public static void main(String[]args)
 {
  Carta carta=new Carta(100,1);
  System.out.println(carta.toString());
 }
}
**********************************************************
**********************************************************
public class Seme
{
 //variabili di classe
 //costanti indicanti il seme
 final static int CUORI=100;
 final static int QUADRI=200;
 final static int FIORI=300;
 final static int PICCHE=400;
 //metodo di classe
 //controlla il seme e l'eventuale lancio eccezione InvalidCardException
 public static void check(int seme)throws InvalidCardException
 {
  if(seme!=CUORI && seme!=QUADRI && seme!=PICCHE && seme!=FIORI)
   throw new InvalidCardException();
 }
 //variabile di istanza
 //contiene una delle costanti dichiarate sopra, indicante il seme 
dell'oggetto
 public int s;
 //costruttore
 public Seme(int seme)
 {
  //può contenere l'eccezione InvalidCardException
  try
  {
   check(seme);
   System.out.println("Il seme è corretto");
   this.s=seme;
  }
  catch(Exception e)
  {
   e.printStackTrace(); //stampa stringa introdotta nel costruttore 
dell'eccezione
  }
 }
 //metodi di istanza
 public void set(int valore)throws InvalidCardException //setta variabile di 
istanza s
 {
  if(valore!=CUORI && valore!=QUADRI && valore!=PICCHE && valore!=FIORI)
   throw new InvalidCardException();
  else this.s=valore;
 }
 public int get()throws InvalidCardException //ottiene variabile di istanza 
s
 {
  if(this.s!=CUORI && this.s!=QUADRI && this.s!=PICCHE && this.s!=FIORI)
   throw new InvalidCardException();
  else return this.s;
 }
 public String toString() //conversione valore numerico di s in stringa
 {
  String stringa="";
  switch(this.s)
  {
   case CUORI:
    stringa="cuori";
    break;
   case QUADRI:
    stringa="quadri";
    break;
   case FIORI:
    stringa="fiori";
    break;
   case PICCHE:
    stringa="picche";
  }
  return stringa;
 }
}
**********************************************************
**********************************************************
public class Valore {
 //variabili di classe
 //costanti indicanti il valore
 final static int ASSO=1;
 final static int DUE=2;
 final static int TRE=3;
 final static int QUATTRO=4;
 final static int CINQUE=5;
 final static int SEI=6;
 final static int SETTE=7;
 final static int OTTO=8;
 final static int NOVE=9;
 final static int DIECI=10;
 final static int FANTE=11;
 final static int DONNA=12;
 final static int RE=13;
 //metodo di classe
 //controlla il valore e l'eventuale lancio eccezione InvalidCardException
 public static void check(int numero)throws InvalidCardException
 {
  if(numero!=ASSO && numero!=DUE && numero!=TRE && numero!=QUATTRO && 
numero!=CINQUE && numero!=SEI && numero!=SETTE && numero!=OTTO && 
numero!=NOVE && numero!=DIECI && numero!=FANTE && numero!=DONNA && 
numero!=RE)
   throw new InvalidCardException();
 }
 //variabile di istanza
 //contiene una delle costanti dichiarate sopra, indicante il valore 
dell'oggetto
 public int v;
 //costruttore
 public Valore(int numero)
 {
  //può contenere l'eccezione InvalidCardException
  try
  {
   check(numero);
   System.out.println("Il valore è corretto");
   this.v=numero;
  }
  catch(Exception e)
  {
   e.printStackTrace(); //stampa stringa introdotta nel costruttore 
dell'eccezione
  }
 }
 //metodi di istanza
 public void set(int valore)throws InvalidCardException //setta variabile di 
istanza v
 {
  if(valore!=ASSO && valore!=DUE && valore!=TRE && valore!=QUATTRO && 
valore!=CINQUE && valore!=SEI && valore!=SETTE && valore!=OTTO && 
valore!=NOVE && valore!=DIECI && valore!=FANTE && valore!=DONNA && 
valore!=RE)
   throw new InvalidCardException();
  else this.v=valore;
 }
 public int get()throws InvalidCardException //ottiene variabile di istanza 
v
 {
  if(this.v!=ASSO && this.v!=DUE && this.v!=TRE && this.v!=QUATTRO && 
this.v!=CINQUE && this.v!=SEI && this.v!=SETTE && this.v!=OTTO && 
this.v!=NOVE && this.v!=DIECI && this.v!=FANTE && this.v!=DONNA && 
this.v!=RE)
   throw new InvalidCardException();
  else return this.v;
 }
 public String toString() //conversione valore numerico di v in stringa
 {
  String stringa="";
  switch(this.v)
  {
   case ASSO:
    stringa="asso";
    break;
   case DUE:
    stringa="due";
    break;
   case TRE:
    stringa="tre";
    break;
   case QUATTRO:
    stringa="quattro";
    break;
   case CINQUE:
    stringa="cinque";
    break;
   case SEI:
    stringa="sei";
    break;
   case SETTE:
    stringa="sette";
    break;
   case OTTO:
    stringa="otto";
    break;
   case NOVE:
    stringa="nove";
    break;
   case DIECI:
    stringa="dieci";
    break;
   case FANTE:
    stringa="fante";
    break;
   case DONNA:
    stringa="donna";
    break;
   case RE:
    stringa="re";
  }
  return stringa;
 }
}

 ha scritto nel messaggio 
news:BkMLd.22292$2h5....@tornado.fastwebnet.it...



no, sto svolgendo un training ... :D 

diciamo che ho in parte capito l'errore ... è nel secondo costruttore, così 
dovevo scrivere:
//creo le variabili di istanza della classe Carta
   seme=new Seme(primo);
   valore=new Valore(secondo);
avendo già il reference ...
Ma ora la mia domanda è: come posso usare il primo costruttore ? scritto 
così è sicuramente errato dato che non istanzio le variabili di istanza (che 
in questo caso sono gli oggetti Seme e Valore dato che non faccio new).
public class Carta {
 //variabili di istanza
 Seme seme;
 Valore valore;
 //costruttori
 //primo costruttore basato su oggetti seme e valore
 public Carta(Seme s, Valore v)
 {
  this.seme=s;
  this.valore=v;
 }
....
Come si può scrivere allora?