04/07/12 11:20
enrico_84
Vi posto il codice della classe principale:
Ora vorrei creare nella classe main dei messaggi da visualizzare con il destinatario, data, ora e mittente:
Purtroppo mi da errore nella creazione degli oggetti, mi aiutate voi a farlo funzionare? Grazie mille!
abstract class Messaggio { protected String mittente; protected String destinatario; protected String data; protected String ora; //costruttori public void impostaMittente(String mittente) { this.mittente = mittente; } public void impostaDestinatario(String destinatario) { this.destinatario = destinatario; } public void impostaData(String data) { this.data = data; } public void impostaOra(String ora) { this.ora = ora; } } abstract class MessaggioDiTesto extends Messaggio { protected char[] testo; protected int numeroCaratteri = 0; abstract boolean aggiungi(char c); public String toString() { String tmp = "Da: " +mittente+ "\n" + "A: " +destinatario+ "\n" + "Data: " +data+ " " +ora; for(int i=0; i<numeroCaratteri; i++) tmp += (i%25==0? "\n" : "") +testo[i]; return tmp; } } class Sms extends MessaggioDiTesto { public static final int MAX = 160; //costruttore, lo costruisco come un array public Sms() { this.testo = new char[MAX]; } public boolean aggiungi(char c) { if(this.numeroCaratteri < MAX) { this.testo[this.numeroCaratteri++] = c; return true; } else return false; } } class SmsLungo extends MessaggioDiTesto { private String testoLungo = ""; public boolean aggiungi(char c) { this.testoLungo += c; this.numeroCaratteri++; this.testo = this.testoLungo.toCharArray(); return true; } //creo un array di Sms normali da un Sms lungo public Sms[] spezza() { int numeroMessaggi = this.numeroCaratteri/Sms.MAX+1; Sms[] messaggi = new Sms[numeroMessaggi]; for(int i=0; i<numeroMessaggi; i++) { messaggi[i] = new Sms(); messaggi[i].impostaMittente(this.mittente); messaggi[i].impostaDestinatario(this.destinatario); messaggi[i].impostaData(this.data); messaggi[i].impostaOra(this.ora); int j = i * Sms.MAX; while(j<this.numeroCaratteri && messaggi[i].aggiungi(this.testo[j])) j++; } return messaggi; } }
Ora vorrei creare nella classe main dei messaggi da visualizzare con il destinatario, data, ora e mittente:
public class UsaSms { public static void main(String[] args) { Messaggio mess = new Sms(); Messaggio mess1 = new SmsLungo(); System.out.print("Inserisci il tuo numero di telefono: "); mess.impostaMittente(Leggi.unoString()); System.out.print("\nChe giorno è oggi? "); mess.impostaData(Leggi.unoString()); System.out.println("Scrivi un messaggio breve (max 160 caratteri) "); String x = Leggi.unoString(); //inserisco i caratteri della stringa in un array char[] caratteri = x.toCharArray(); for(int i=0; i<caratteri.length; i++) mess.aggiungi(caratteri[i]); System.out.println(); System.out.print("Che ore sono? "); mess.impostaOra(Leggi.unoString()); System.out.print("Inserisci il numero di telefono\n" + " a cui inviare il messaggio: "); mess.impostaDestinatario(Leggi.unoString()); System.out.println(); System.out.println("Ora scrivi un messaggio lungo "); mess1.aggiungi(Leggi.unChar()); System.out.println(); System.out.print("Che ore sono? "); mess.impostaOra(Leggi.unoString()); System.out.print("Inserisci il numero di telefono\n" + " a cui inviare il messaggio: "); mess.impostaDestinatario(Leggi.unoString()); System.out.println(); System.out.print("Il primo messaggio, quello breve, è il seguente: "); System.out.print(mess.spezza()); System.out.print("Il secondo messaggio, quello lungo, è il seguente: "); System.out.print(mess1.spezza()); System.exit(0); } }
Purtroppo mi da errore nella creazione degli oggetti, mi aiutate voi a farlo funzionare? Grazie mille!
aaa