Pomoc oko exceptiona [Java]

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Odgovori
Jelena
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Spol: Z
OS: Windows &

Pomoc oko exceptiona [Java]

Post Postao/la Jelena »

Pozdav,imam zadatak da napravim panel za unos i prikaz imena ,prezime,indeksa studenata,sve sam to uradila,jedino imam problem oko hvatanja izuzetaka ako neko ne unese nesto od podataka evo moj kod:

Kod: Označi sve

public class Projektni extends JFrame {
    public final JTextField ime = new JTextField(10);
    public final JTextField prezime = new JTextField(10);
    public final JTextField index = new JTextField(10);
    public DefaultListModel podaci = new DefaultListModel();
    public JList lista = new JList(podaci);
//prazan konstruktor gde implementiramo i definisemo dugmice,polja za upisivanje podataka i osluskivace
    public Projektni()
    {
        ime.setPreferredSize(new Dimension(200,80));
        prezime.setPreferredSize(new Dimension(200,80));
        index.setPreferredSize(new Dimension(150,40));
 JPanel panel=new JPanel (new GridLayout(6, 7));
panel.add(new JLabel("Ime studenta:"));
panel.add(ime);
panel.add(new JLabel("Prezime studenta:"));
panel.add(prezime);
panel.add(new JLabel("Broj indeksa studenta:"));
panel.add(index);
panel.setBackground(Color.cyan);
String[] seminari = {"Microsoft","MAC","Java"};
final JComboBox cek = new JComboBox(seminari);
panel.add(cek);
 
JButton upisibtn=new JButton("Upisi");
upisibtn.setPreferredSize(new Dimension(30,30));

upisibtn.addActionListener(new ActionListener()
{
    
    @Override
    
    public void actionPerformed(ActionEvent e)
    {
        try{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
        Upisi.upisi(s);
    }
        catch (NemaIndeks ex  ) {
                JOptionPane.showMessageDialog(null, ex);
            }
  
}});


    
//Dugme prikazi ,koji prikazuje upisane podatke preko klase citaj.
JButton citajbtn=new JButton("Prikazi");
citajbtn.setPreferredSize(new Dimension(30,30));
citajbtn.addActionListener(new ActionListener()
{
  @Override
  public void actionPerformed(ActionEvent e)
  {
   for(String s:Citaj.citaj())
   podaci.addElement(s);
  
  }
});

//Dodavanje komponenata na panel.
panel.add(upisibtn);
panel.add(citajbtn);
add(panel,BorderLayout.CENTER);
panel.add(lista);

            }
    
    public String nazivZaUnos() throws NemaNaziv {
        String naziv = ime.getText();
        if (naziv.equals("")) {
            throw new NemaNaziv("Niste uneli naziv studenta. ");
        }
        return naziv;
    }
    public String nazivZaUnosPrezimena() throws NemaPrezime {
        String prez = prezime.getText();
        if (prez.equals("")) {
            throw new NemaPrezime("Niste uneli prezime studenta. ");
        }
        return prez;
    }
     public String NemaIndeks() throws NemaIndeks {
        String indeks = index.getText();
        if (indeks.equals("")) {
            throw new NemaIndeks("Niste unelii ndeks studenta. ");
        }
        return indeks;
    }

  
    
  
   
   
                

        


//pokretacki metod
    public static void main(String[] args) {
        JFrame frame = new Projektni();
        

    frame.setSize(400, 300);
    frame.setLocationRelativeTo(null); 
    frame.setTitle("Seminari");
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
    
    }


    }

mam napisane metode citaj,upisi koje rade i klase exceptiona,problem mi se javlja u ovom delu koda:

Kod: Označi sve

upisibtn.addActionListener(new ActionListener()
{
    
    @Override
    
    public void actionPerformed(ActionEvent e)
    {
        try{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
        Upisi.upisi(s);
    }
        catch (NemaIndeks ex  ) {
                JOptionPane.showMessageDialog(null, ex);
            }
  
}});
Ako neko zna sta treba da popravim i kako,neka napise.Hvala!
Avatar
vkrajacic89
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Spol: M
OS: Arch Linux
Lokacija: /home/Samobor
Kontakt:

Re: Pomoc oko exceptiona [Java]

Post Postao/la vkrajacic89 »

Bok. Ovako na prvu reko bi da se compiler budi oko istog imena za metodu i klasu. Konkretno ova linija:

Kod: Označi sve

public String NemaIndeks() throws NemaIndeks
Promjeni ime metode ili ime klase u nešto drugo. Ako nije do toga, pomoglo bi da zapakiraš kod i pošalješ da neko drugi može debuggirat kod sebe. Teško je ovako uočit problem kad samo dio koda pokažeš.
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Jelena
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Spol: Z
OS: Windows &

Re: Pomoc oko exceptiona [Java]

Post Postao/la Jelena »

Nije do toga.Hvala,u svakom slucaju.
Evo zadatka.
Privitak/ci
ZadatakJelena.zip
Zadatak
(29.01 KiB) Preuzeto 359 puta.
Avatar
vkrajacic89
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Spol: M
OS: Arch Linux
Lokacija: /home/Samobor
Kontakt:

Re: Pomoc oko exceptiona [Java]

Post Postao/la vkrajacic89 »

Ovdje ti ne treba try catch jer nijedna od metodi koje zoveš ne deklarira bacanje iznimke.

Kod: Označi sve

try {
    String s = ime.getText() + " " + prezime.getText() + " " + index.getText() + " " + cek.getSelectedItem() + "\n";
    Upisi.upisi(s);
} catch (NemaIndeks | NemaNaziv | NemaPrezime ex) {
    JOptionPane.showMessageDialog(null, ex);
}
Iza ovog dijela ti fali zatvorena vitica od konstruktora.

Kod: Označi sve

//Dodavanje komponenata na panel.
panel.add(upisibtn);
panel.add(citajbtn);
add(panel, BorderLayout.CENTER);
panel.add(lista);
Sintaktičke greške kao parovi zagrada se lakše otkriju ako pišeš uredan kod i uvlačiš linije, što nebi mogao reć za tvoj kod :D. Možda si se žurila. Što se tiče ostalih greška moraš ih naučit debuggirat. Konkretno, za try catch block meni je javac javio "Error:(60, 19) java: exception javaapplication4.NemaIndeks is never thrown in body of corresponding try statement" što mislim da samo po sebi dovoljno govori o čemu se radi. Ali ako nisi sigurna, uvijek prvo probaj googlat taj error, sigurno se već neko s tim sreo. Obično ćeš nać odgovor na stackoverflow-u. Sretno dalje!
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Jelena
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Spol: Z
OS: Windows &

Re: Pomoc oko exceptiona [Java]

Post Postao/la Jelena »

Hvala ti,ja sam uradila ali sad imam problem sto vata izuzetak ali se ipak izvrsi upis -.-

Kod: Označi sve

 public void actionPerformed(ActionEvent e)
    {
        try{
            String s=nazivZaUnosNaziva()+" "+nazivZaUnosPrezimena()+" "+nemaIndeX()+" "+cek.getSelectedItem()+"\n";
        }
        catch(NemaNaziv|NemaIndeks|NemaPrezime ex){
            JOptionPane.showMessageDialog(null, ex);
            
        }
        finally{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
        
        Upisi.upisi(s);
       
        }
    
           }
}]
Avatar
vkrajacic89
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Spol: M
OS: Arch Linux
Lokacija: /home/Samobor
Kontakt:

Re: Pomoc oko exceptiona [Java]

Post Postao/la vkrajacic89 »

Ne znam kako točno treba radit program, ali upis se izvrši svaki put zato što si ga stavila u finally blok. Taj blok se izvršava neovisno o tome da li se pojavila iznimka ili su naredbe u try bloku uspješno izvršene. Obično se koristi da bi se izašlo na čisti način iz try catch bloka, npr. zatvaranje datoteke ili konekcije prema bazi.
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Odgovori