Java Kalkulator Zaliczenie

0

Witam wszystkich mam do napisania program w języku Java na zaliczenie. Jest to prosty kalkulator z listą rozwijalną, czyli wpisujemy dwie liczby i wybieramy znak (+ - * / ) z listy. Mój problem jest taki że mam napisany cały program i on działa tylko jest problem,że muszę dodać możliwość żeby przy wyborze z listy znaku dzielenia i wpisaniu w pole np. liczba1-15 a w pole liczba2-0 wyskakiwał komunikat, że nie można tego zrobić ;/ Nie wiem jak się do tego zabrać. Pomocy :)

Kod programu napisany jest w NetBeans IDE 7.0.1.
Załączam screen jak wygląda działający program.
user image

Oto kod mojego programu:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkg48;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 *
 */
public class NewApplet extends Applet implements ItemListener, WindowListener {
   
         Label l1=new Label("Liczba 1");
         Label l2=new Label("Liczba 2");
         Label l3=new Label("Wybierz dzialanie");
         Label l4=new Label("Wynik");
         Choice lista1=new Choice();
         Panel p1=new Panel();
         Panel p2=new Panel();
    
         TextField liczba1=new TextField(10);
         TextField liczba2=new TextField(10);
         TextField wynik=new TextField(10);    
         
        @Override
    public void init() {
        
       setLayout (new BorderLayout());
        p1.setLayout(new FlowLayout());
        this.add(p1,BorderLayout.CENTER);
        p1.add(l1);
        p1.add(liczba1);
        p1.add(l2);
        p1.add(liczba2);
        p1.add(l3);
        p1.add(lista1);
     
        p2.setLayout(new FlowLayout());
        this.add(p2,BorderLayout.SOUTH);
        p2.add(l4);
        p2.add(wynik); 
        
        lista1.add("+");
        lista1.add("-");
        lista1.add("*");
        lista1.add("/");
        lista1.addItemListener(this);
          
    wynik.setEnabled(false);
        
    }

    public void itemStateChanged(ItemEvent e) {
         
         Object o=e.getSource();
         long wynikl=0;
       if (o==lista1)
       {
           long n=Integer.parseInt(liczba1.getText());
           long m=Integer.parseInt(liczba2.getText()); 
           int poz=lista1.getSelectedIndex();
           if (poz==0)
           {wynikl=n+m;
           }
           else if (poz==1)
           {wynikl=n-m;
           }
           else if (poz==2)
           {wynikl=n*m;
           }
           else if (poz==3)
           {wynikl=n/m;
           }
               }
       System.out.println("Nie można dzielić przez ZERO!");
           wynik.setText(Long.toString(wynikl));
       }

    @Override
    public void windowOpened(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowClosing(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowClosed(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowIconified(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowActivated(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

  
    }
 

Jeśli ten temat jest bez sensu, lub nie pasuję to proszę o kasację tegoż tematu.

Dziękuje za wszelką pomocną dłoń :P

0

Dodaj Label ustaw mu visible na false.
W metodzie itemStateChanged po pobraniu wartości z obu pól sprawdź czy któraś jest 0.
Jeżeli jest to ustaw na label text komunikatu jaki chcesz wyświetlić a potem visible na true.
Przerwij działanie metody żeby nie wykonywać obliczeń.

0

A nie ma w Javie czegoś takiego jak w np. Python'ie? Funkcje exec albo eval - wtedy miałbyś gotowy kalkulator uzyskany minimalnym nakładem pracy, który daje wynik dla całej wpisanej formuły, nawet z funkcjami trygonometrycznymi itd. :D Jakby jeszcze dodać wyłapywanie wyjątków, to byś miał proste sprawdzanie, czy wpisane działanie jest zgodne ze składnią.

0

A bardziej jaśniej :| Np.kod

0

Na prawdę trudno w miejscu dzielenia przez zero wstawić warunek sprawdzający czy dzielnik == 0, i jeżeli tak to zamiast w labelu wynik ustawić treść "Nie można dzielić przez 0!"?

0

W końcu się udało :)

 
 else if (m==0){ 
System.out.println("Nie można dzielić przez ZERO!"); 
 }
 else if (poz==3)
 {wynikl=n/m;
 }

Ok spróbuję z tym komunikatem co podesłałeś :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1