Ho fatto un programma in java è mi dà dei problemi di fondo che nn riesco a risolvere!
Il tutto in per se funziona ma mi da dei problemi che mi impediscono di fare il "eseguibile".
Mi serve velocemente una solozione perchè dovo fare l'orientamento a quelli delle seconde e quindi deve funzionare senza un minimo errore.
e vi mostro gli errori che mi dà in compilazione
(Nella documentazione parla di qualcosa tipo <E> che non ho la più vaga idea cosa sia!)
questo è l'errore:
codice:
questo è il codice: ( Gioco.java Gioco.rar Gioco.zip )
codice:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

class AlberoBinStr implements Serializable{
    protected String info;
    protected AlberoBinStr left,right; // left NO!  - right SI!
    
    public AlberoBinStr(String info, AlberoBinStr left, AlberoBinStr right) {
        this.info=info;
        this.left=left;
        this.right=right;
    }
}

public class Gioco{
    static private int[] punteggio;
    static private AlberoBinStr ao;
    static private AlberoBinStr co;
    static private ArrayList vocaboli;
    
    public Gioco(){
        main();
    }
    public void Gioca() {
        main();
    }
    public static void main() {
        File predefinito = new File("Predefinito.abs");
        if (predefinito.exists()){
            try {
                FileInputStream fis = new FileInputStream("Predefinito.abs");
                ObjectInputStream ois = new ObjectInputStream(fis);
                ao = (AlberoBinStr) (ois.readObject());
                vocaboli = (ArrayList) (ois.readObject());
                ois.close();
            } catch (Exception e1) {
                System.out.println("Errore nel caricamento: "+e1);
            }
        } else {
            ao = new AlberoBinStr("E' un mammifero?",new AlberoBinStr("una trota",null,null),new AlberoBinStr("un cane",null,null));
            vocaboli = new ArrayList();
            vocaboli.add("una trota");
            vocaboli.add("un cane");
            vocaboli.trimToSize();
            try {
                FileOutputStream fos1 = new FileOutputStream("Predefinito.abs");
                ObjectOutputStream oos1 = new ObjectOutputStream(fos1);
                oos1.writeObject(ao);
                oos1.writeObject(vocaboli);
                oos1.close();
            } catch (Exception e) {
                System.out.println("Errore nel salvataggio: "+e);
            }
        }
        punteggio = new int[2];
        punteggio[0]=0;
        punteggio[1]=0;
        co = ao;
        Frame f = new Frame("Gioco Albero Binario di AutoApprendimento");
        f.addWindowListener(new AF());
        f.setSize(350,120);
        f.setLayout(new GridLayout(3,1));
        Panel p = new Panel();
        Label lbl_domanda = new Label("Pensa ad un animale! Fatto?");
        p.add(lbl_domanda);
        f.add(p);
        p = new Panel();
        p.setLayout(new GridLayout(1,2));
        Panel p1 = new Panel();
        Choice opt_risposta = new Choice();
        opt_risposta.add("Si");
        opt_risposta.add("No");
        p1.add(opt_risposta);
        p.add(p1);
        p1 = new Panel();
        Button btn_risp = new Button("Rispondi");
        p1.add(btn_risp);
        p.add(p1);
        f.add(p);
        p=new Panel();
        Label lbl_punteggio = new Label("Computer: "+punteggio[0]+"   -   Utente: "+punteggio[1]);
        p.add(lbl_punteggio);
        f.add(p);
        btn_risp.addActionListener(new asc_risp(opt_risposta, lbl_domanda, lbl_punteggio, co, punteggio,ao,f,vocaboli));
        f.setResizable(false);
        f.setVisible(true);        
    }
    public void Contenuto() {
        String voctxt = (String) vocaboli.get(0);
        int i;
        for (i=1;i<vocaboli.size();i++) {
            voctxt += ", "+(String) vocaboli.get(i);
        }
        System.out.println("Il mio database contiene "+vocaboli.size()+" elementi");
        System.out.println(voctxt);
    }
        
}

class asc_add implements ActionListener {
    TextField domanda;
    Label lbl_domanda;
    TextField risposta;
    AlberoBinStr copy;
    AlberoBinStr al_org;
    ArrayList vocaboli2;
    Frame ftc;
    Frame fts;
    public asc_add(TextField a,TextField b, AlberoBinStr c, Frame f, Frame ff, AlberoBinStr org, Label l, ArrayList v) { domanda = a; risposta = b; copy = c; ftc=f; fts = ff; al_org = org; lbl_domanda=l; vocaboli2=v; }
    public void actionPerformed(ActionEvent e){
        if ( ((domanda.getText()).length() > 0 ) &&  ((risposta.getText()).length() > 0 ) ) {
            copy.left=new AlberoBinStr(copy.info,null,null);
            copy.info=domanda.getText();
            copy.right=new AlberoBinStr(risposta.getText(),null,null);
            copy=al_org;
            vocaboli2.add(risposta.getText());
            vocaboli2.trimToSize();
            try {
                FileOutputStream fos2 = new FileOutputStream("Predefinito.abs");
                ObjectOutputStream oos2 = new ObjectOutputStream(fos2);
                oos2.writeObject(al_org);
                oos2.writeObject(vocaboli2);
                oos2.close();
            } catch (Exception e2) {
                System.out.println("Errore nel salvataggio: "+e2);
            }
            lbl_domanda.setText("Pensa ad un altro animale! Fatto?");
            fts.setVisible(true);
            ftc.dispose();
        }
    }
}
class asc_risp implements ActionListener {
    Label domanda;
    Label lbl_punteggio;
    int[] punteggio;
    Choice risposta;
    AlberoBinStr copy;
    AlberoBinStr lc;
    AlberoBinStr albero_originale;
    ArrayList vocaboli1;
    Frame ff;
    public asc_risp(Choice r,Label d, Label lp, AlberoBinStr c, int[] p, AlberoBinStr org, Frame fff, ArrayList v) { domanda=d; risposta=r; copy=c; lbl_punteggio=lp; lc=c; punteggio=p; albero_originale=org; ff=fff; vocaboli1=v; }
    public void actionPerformed(ActionEvent e){
      if ((domanda.getText()!="Pensa ad un animale! Fatto?")&&(domanda.getText()!="Pensa ad un altro animale! Fatto?")) {
        if (domanda.getText()==albero_originale.info) { copy=albero_originale; lc=albero_originale; }
        if (risposta.getSelectedIndex()==0) {
            lc = lc.right;
            if (lc==null) {
                punteggio[0]++;
                lbl_punteggio.setText("Computer: "+punteggio[0]+"   -   Utente: "+punteggio[1]);
                copy=albero_originale;
                domanda.setText("Pensa ad un altro animale! Fatto?");
            } else {
                copy=lc;
                if (lc.right!=null) {
                    domanda.setText(copy.info);
                } else {
                    domanda.setText("E' "+copy.info+"?");
                }
            }
        } else {
            lc = lc.left;
            if (lc==null) {
                punteggio[1]++;
                lbl_punteggio.setText("Computer: "+punteggio[0]+"   -   Utente: "+punteggio[1]);
                ff.setVisible(false);
                getInput();
            } else {
                copy=lc;
                if (lc.right!=null) {
                    domanda.setText(copy.info);
                } else {
                    domanda.setText("E' "+copy.info+"?");
                }
            }
        }
     } else {
         if (risposta.getSelectedIndex()==0) {
            domanda.setText(albero_originale.info);
        }
     }
    }
    private void getInput() {
       Frame f = new Frame("AutoApprensione");
       f.addWindowListener(new AF());
       f.setLayout(new GridLayout(4,1));
       
       Panel p = new Panel();
       p.setLayout(new GridLayout(3,1));
       p.add(new Label("Inserisci una domanda per la quale \""+copy.info+"\" non può essere"));
       p.add(new Label("la risposta mentre l'animale che tu hai pensato può esserlo."));
       p.add(new Label("E inserisci anche l'animale che hai pensato."));
       f.add(p);
       
       
       p = new Panel();
       p.setLayout(new GridLayout(1,2));
       p.add(new Label("Domanda: (es. \"Miagola?\")"));
       Panel p1 = new Panel();
       TextField txt_domanda = new TextField(21);
       p1.add(txt_domanda);
       p.add(p1);
       f.add(p);
       
       
       p = new Panel();
       p.setLayout(new GridLayout(1,2));
       p.add(new Label("Animale: (es. \"una zebra\")"));
       p1 = new Panel();
       TextField txt_risposta = new TextField(21);
       p1.add(txt_risposta);
       p.add(p1);
       f.add(p);
       
       
       p = new Panel();
       p.setLayout(new GridLayout(1,3));
       p.add(new Label(""));
       p.add(new Label(""));
       p1 = new Panel();
       Button btn_add = new Button("Aggiungi");
       btn_add.addActionListener(new asc_add(txt_domanda,txt_risposta,copy,f,ff,albero_originale,domanda,vocaboli1));
       p1.add(btn_add);
       p.add(p1);
       f.add(p);
       f.setSize(360,200);
       f.setResizable(false);
       f.setVisible(true);
    }    
}
class AF extends WindowAdapter{
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}