Allora...............................
Es. 2 Modificate il metodo riempi dell'esercizio 1 per far lanciare l'eccezione ArchivioPieno...
Questa è la classe del TDA Archivio...
codice:
class Archivio {
private int contenuto;
private int capacita;
public Archivio(int capacita) {
this.capacita = capacita;
contenuto = 0;
}
public int getContenuto() {
return contenuto;
}
public void riempi(int quantita) {
if (quantita > 0) {
if (contenuto + quantita > capacita) {
throw new ArchivioPieno(contenuto + quantita - capacita); // il prob. è qui ovviamente...
}
contenuto = contenuto + quantita;
}
}
public void svuota() {
contenuto = 0;
}
}
e mi genera il seguente ERRORE in compilazione
Archivio.java:15: unreported exception ArchivioPieno; must be caught or declared to be thrown
throw new ArchivioPieno(contenuto + quantita - capacita);
^
1 error
Compilazione fallita.
La classe UsaArchivio l'ho scritta così:
codice:
class UsoArchivio {
public static void main(String[] args) {
Archivio a1 = new Archivio(15);
a1.riempi(((15*2)/5));
Archivio a2 = new Archivio(5);
a2.riempi(3);
a1.riempi(a2.getContenuto());
a2.svuota();
try {
a1.riempi(15);
}catch(Exception a) {
System.out.println(a2.toString()); // ho qualche dubbio su questa riga...
}
System.out.println(a1.getContenuto()+" "+a2.getContenuto());
}
}
e mi da il seguente errore :
javac "UsoArchivio.java" (nella cartella: /home/luca/Scrivania/AWT e GUI)
./Archivio.java:15: unreported exception ArchivioPieno; must be caught or declared to be thrown
throw new ArchivioPieno(contenuto + quantita - capacita);
^
1 error
Compilazione fallita.
La classe ArchivioPieno che dovrebbe essere usata come eccezione...
codice:
class ArchivioPieno extends Exception {
private int eccedonoLaCapacita;
public ArchivioPieno(int eccedonoLaCapacita) {
this.eccedonoLaCapacita = eccedonoLaCapacita;
}
public String toString() {
return eccedonoLaCapacita + " elementi di " + "troppo! Non verranno inseriti.";
}
}
Questa non mi segnala errore l'ho messa per completezza..
Es 3 Scrite il programma UitlitaArchivio con un metodo di classe capacita che dato un archivio passato come parametro, restituisce la capacità.
Potete usare indifferentemente la versione di Archivio dell'esercizio 1 o quella dell'esercizio 2
La classe UtilitaArchivio...
codice:
class UtilitaArchivio {
private int capacita;
public int getCapacita() {
return capacita;
}
public static int capacita (Archivio a) {
Archivio b = a;
int x = b.getCapacita();
return x;
}
// non ho la minima idea di come fare a tirare fuori la variabile capacita dal tda archivio
// passato come parametro
}
Mi da il seguente errore...
javac "UsoArchivio.java" (nella cartella: /home/luca/Scrivania/AWT e GUI)
./Archivio.java:15: unreported exception ArchivioPieno; must be caught or declared to be thrown
throw new ArchivioPieno(contenuto + quantita - capacita);
^
1 error
Compilazione fallita.
avevo dimenticato uno static...
Es 4 Costuire un'interfaccia grafica che dato un Archivio passato come parametro al costruttore, mostra una finestra con un'etichetta in alto che mostra il contenuto dell'archivio, un'etichetta in basso che mostra la pacaità dell'archivio(esercizio3) e un pulsante al centro per aggiungere un elemento all'archivio.
La classe GUI che dovrebbe creare l'interfaccia... ma da uno strano errore
codice:
import java.awt.*;
class GuiArchivio extends Frame {
private Frame f;
private Panel p;
private Panel p1;
private Panel p2;
private Label etic;
private Label etic2;
private Button b;
private Archivio a;
public GuiArchivio (Archivio a) {
super("GuiArchivio");
this.a = a;
setBounds(100,100,300,200);
this.f = new Frame();
this.p = new Panel();
this.p1= new Panel();
this.p2= new Panel();
this.etic = new Label(" "+a.getContenuto()+" ");
this.p.add(etic);
this.f.add(p,BorderLayout.NORTH);
this.etic2 = new Label(" "+UtilitaArchivio.capacita(a)+" ");
this.p1.add(etic2);
this.f.add(p1,BorderLayout.SOUTH);
this.b = new Button("Aggiungi elemento");
this.p2.add(b);
this.f.add(p2,BorderLayout.CENTER);
this.pack();
this.setVisible(true);
}
public static void main(String[] args) {
Archivio a = new Archivio(15);
GuiArchivio b = new GuiArchivio(a);
}
}
se metto tra // this.etic2 = new Label(" "+UtilitaArchivio.capacita(a)+" ");
non mi da errori in compilazione però non riesce ad crearmi nessuna finestra... e mi da:
Java.lang.nullPointerException... ecc..