PDA

View Full Version : [java] aiuto programmino


nicolad1988
28-12-2008, 13:45
slave a tutti!non riesco a far funzionare questo programma,mi dà un errore in esecuzione.posto solo il metodo che dà problemi

public void inserisci (Object x)
{
Character r=(Character) x;
v[(r.toString()).charAt(0) -33]=1;
}

e lo invoco in questo modo

Insieme s=new Insieme();
Scanner in=new Scanner(new FileReader(arg[0]));
Scanner primo=new Scanner(in.nextLine());
while (primo.hasNext())
{
s.inserisci(primo.next());
}
mi dice che non posso castare una stringa in un carattere;ho provato in altri modi ma mi dice che non posso castare da object in stringa

wizard1993
28-12-2008, 14:10
quel cast è palesemente illegale per un semplice motivo, input.next() ritorna una stringa i cui limiti sono l'inizio dello stream/scanner/stringa e il delimitatore(solitamente lo spazio) e non il primo carattere. se vuoi convertire una in una stringa il ritorno non c'è bisogno di fare cast, input.next() ritorna già una stringa, per ritornare un char usa il metodo charAt(int) della classe String, per ritornare la stringa rappresentatvia di un oggetto generico usa invece il metodo toString()

nicolad1988
28-12-2008, 16:08
non ho molto capito,come posso scrivere il metodo?
è obbligatorio che io usi come parametro esplicito un Object

wizard1993
29-12-2008, 10:11
non ho molto capito,come posso scrivere il metodo?
è obbligatorio che io usi come parametro esplicito un Object

per convertirlo a String

public String doSome(Object o){
return o.toString();
}

per char

public String doSome(Object o){
return o.toString().charAt(0);
}

nicolad1988
29-12-2008, 11:45
an capito..ma siccome a me serve il codice ascii e poi diminuirlo di 33,posso fare

public String doSome(Object o){
return o.toString().charAt(0)-33;
}
?