Kalkulator Java

Dyskusje na temat Javy.
rafalp890
Początkujący
Początkujący
Posty: 5
Dołączył(a): sobota, 14 stycznia 2012, 15:03

Kalkulator Java

Post przez rafalp890 »

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 napisać taką opcję :roll:

Kod programu napisany jest w NetBeans IDE 7.0.1.
Załączam screen jak wygląda działający program.
http://img31.imageshack.us/img31/2391/javaq.png

Oto kod mojego programu:

Code: Zaznacz cały

 * 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;
           }
               }
           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.");
    }
    }
/*
Dziękuje za wszelką pomocną dłoń
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Kalkulator Java

Post przez Morfidon »

Korzystasz z funkcji:
parseDouble

Jeśli nie będzie to liczba zmiennoprzecinkowa to zostanie wyrzucony wyjątek, który przechwyć.

Pozdrawiam :)
rafalp890
Początkujący
Początkujący
Posty: 5
Dołączył(a): sobota, 14 stycznia 2012, 15:03

Re: Kalkulator Java

Post przez rafalp890 »

A kodowo jak to napisać :?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Kalkulator Java

Post przez Morfidon »

W czym problem, powiedz czego nie rozumiesz.
rafalp890
Początkujący
Początkujący
Posty: 5
Dołączył(a): sobota, 14 stycznia 2012, 15:03

Re: Kalkulator Java

Post przez rafalp890 »

Nie za bardzo rozumiem jak to napisać :(
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Kalkulator Java

Post przez Morfidon »

Sprecyzuj problem, a nie uogólniaj, czego nie rozumiesz w tej funkcji, w ogóle wiesz co to funkcje? czy oglądałeś moje kursy, jeśli tak to które i czy wszystkie lekcje? Czy wiesz co to jest blok try catch?

Właściwie to skorzystałeś z parseInt, też jest dobrze (przy założeniu, że wprowadzamy tylko liczby całkowite), jeśli nie będzie Integera a texfieldzie to zostanie wyrzucony(thrown) w powietrze błąd, który musisz obsłużyć(catch) przy pomocy bloku try catch i to wszystko. W lekcji 20 video kursu java dokładnie pokazuje jak napisać obsługę błędów, ba nawet własną klasę wyjątku.
rafalp890
Początkujący
Początkujący
Posty: 5
Dołączył(a): sobota, 14 stycznia 2012, 15:03

Re: Kalkulator Java

Post przez rafalp890 »

Wybacz "Morfidon": ale nie oglądałem żadnych z twoich kursów,chyba czas zacząć oglądać dzięki ;)
rafalp890
Początkujący
Początkujący
Posty: 5
Dołączył(a): sobota, 14 stycznia 2012, 15:03

Re: Kalkulator Java

Post przez rafalp890 »

W końcu się udało , zrobiłem to co miało być :D

Code: Zaznacz cały

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