Skocz do zawartości

Java- Prosty Program


baku

Rekomendowane odpowiedzi

Witam!

 

Nie che tutaj opowiadać calej historii. Złożyło się tak że musiałem wyjechać i nie było mnie na zajęciach na uczelni. Dowiedziałem się od kolegi że mam do oddania program z javy na zaliczenie. Oto informacje jakie mi podał (więcej nie pamięta).

 

Program ma mieć conajmniej jedną klasę, jakieś obiekty (co do tego nie jestem pewien). Wiem że nie musi być stosowane dziedziczenie. Mam też wykonać jakieś działania na tych obiektach ewentualnie zmiennych. Jako przykład został podany kalkulator.

 

Uczyłem się trochę z książki "Praktyczny kurs Java" Lisa i co nieco wiem (o ile można tak powiedzieć po 2 dniach nauki). Wcześniej programowałem także w C++. Gdybym miał więcej czasu pewnie sam bym napisał taki program. Jednak na tym etapie nie potrafie sobie poradzić. Gdyby ktoś posiadał lub byłby tak miły i zrobił jakiś prosty program np. kalkulator (oczywiście nie graficzny, ale prosty działający w trybie tekstowym) będe bardzo zobowiązany.

 

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę, to jest kalulator smile.gif Co prawda tylko dodawanie mu działa poprawnie, ale nie miałem czasu siedzieć nad tym dłużej. Masz dwa pliki:

 

Main.java

 

package kalkulator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Main{
   Main()
   {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new Kalkulator());
    frame.setSize(150,250);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
  public static void main(String args[])
  {
    new Main();
  }
}

 

 

i Kalkulator.java

 

package kalkulator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Kalkulator extends JPanel{
 JTextField tekst;
 static double x1,y1;

 Kalkulator(){
     this.setLayout(new BorderLayout());
     JPanel panel1 =new JPanel();
     JPanel panel2 = new JPanel();
     tekst = new JTextField(5);
     tekst.setFont(new Font("Ariel",Font.PLAIN,20));
     panel1.add(tekst);
     panel2.setLayout(new GridLayout(5,3));
     JButton but1 = new JButton("1");
     JButton but2 = new JButton("2");
     JButton but3 = new JButton("3");
     JButton but4 = new JButton("4");
     JButton but5 = new JButton("5");
     JButton but6 = new JButton("6");
     JButton but7 = new JButton("7");
     JButton but8 = new JButton("8");
     JButton but9 = new JButton("9");
     JButton butp = new JButton("+");
     JButton butm = new JButton("-");
     JButton butk = new JButton(".");
     JButton butr = new JButton("=");
     Action act = new Action(tekst);
     but1.addActionListener(act);
     but2.addActionListener(act);
     but3.addActionListener(act);
     but4.addActionListener(act);
     but5.addActionListener(act);
     but6.addActionListener(act);
     but7.addActionListener(act);
     but8.addActionListener(act);
     but9.addActionListener(act);
     butp.addActionListener(act);
     butm.addActionListener(act);
     butk.addActionListener(act);
     butr.addActionListener(act);
     but1.setActionCommand("1");
     but2.setActionCommand("2");
     but3.setActionCommand("3");
     but4.setActionCommand("4");
     but5.setActionCommand("5");
     but6.setActionCommand("6");
     but7.setActionCommand("7");
     but8.setActionCommand("8");
     but9.setActionCommand("9");
     butp.setActionCommand("+");
     butm.setActionCommand("-");
     butk.setActionCommand(".");
     butr.setActionCommand("=");
     panel2.add(but1);
     panel2.add(but2);
     panel2.add(but3);
     panel2.add(but4);
     panel2.add(but5);
     panel2.add(but6);
     panel2.add(but7);
     panel2.add(but8);
     panel2.add(but9);
     panel2.add(butp);
     panel2.add(butm);
     panel2.add(butk);
     panel2.add(butr);
     this.add(panel1,BorderLayout.NORTH);
     this.add(panel2,BorderLayout.CENTER);
  }
}
class Action implements ActionListener{
  static double x1,x2;
  JTextField tekst;
   Action(JTextField tekst)
   {
     this.tekst=tekst;
   }
   public void actionPerformed(ActionEvent e)
   {
     String s1=tekst.getText();
     String s = e.getActionCommand();
     if(s.equals("+"))
     {
         s1=tekst.getText();
         x1=Double.parseDouble(s1);
         tekst.setText("");
         return;
     }
     if(s.equals("="))
     {
         s1=tekst.getText();
         x2=Double.parseDouble(s1);
         x1+=x2;
         Double y1 = new Double(x1);
          tekst.setText(y1.toString());
          return;
     }
     tekst.setText(s1+s);
   }
}

 

Proponuję pisać Javę w środowisku NetBeans (najlepszy, darmowy, dostępny ze strony netbeans.org od razu ze środowiskiem Java - LINK TUTAJ). Tworzysz sobie dwie klasy o powyższych nazwach i wklejasz do nich napisane przeze mnie kody. Działa jak trzeba, popraw odejmowanie.

 

Wykorzystałem bibliotekę Swing, która służy generalnie do łatwego robienia programów okienkowych w dowolnym systemie operacyjnym zaopatrzonym w Java Virtual Machine. Jak będziesz miał jeszcze jakieś pytania wal śmiało.

 

Andrzej Orkan

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki za kod tylko właśnie to nie może być kalkulator graficzny. Chodzi o taki zwykły dzialający pod konsolą DOS'a. Dzięki jednak i za to, (_napewno_ → na pewno) ORT się przyda bo w przyszłości będe miał do oddania aplikację graficzną.

 

A co do wypowiedzi Fedajkin to szukałem już przykładów, ale niestety znajduje same aplikacje graficzne, może jakaś podpowiedź jak znaleść to o co mi chodzi?

 

Program mam oddać w sobotę niby, ale wcześniej musze go przesłać wykładowcy na skrzynkę (mysle że w czwartek wieczorem byłoby najlepiej)

Odnośnik do komentarza
Udostępnij na innych stronach

baku - jeśli jesteś poważny i rzeczywiście znasz się na c++ to wyrzucenie składników graficznych i pozostawienie samych obliczeń powinieneś umieć wykonać sam w minutę smile.gif No... może 2. wink.gif

 

Orkan

Odnośnik do komentarza
Udostępnij na innych stronach

Nie powiedziałem, że znam się dobrze na c++ ale taki kalkulator to zrobiłbym w jakieś 5 minut. W javie mam problem z wprowadzaniem danych z klawiatury bo niestety nie da się tego załatwić jednym poleceniem jak w c++. Nie bardzo też rozumiem o co chodzi z tymi wyjątkami. Generalnie nie radze sobie z tym co jest inne niż w c++.

 

Fedajkin dzięki za materiały rzeczywiście przydadzą się.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 months later...

W javie mam problem z wprowadzaniem danych z klawiatury bo niestety nie da się tego załatwić jednym poleceniem jak w c++.

wprowadzanie i wyprowadzanie jest rownie proste jak w cpp, tez operuje na strumieniach IO. na poczatek zaimportuj kilka pakietów:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

 

w ciele programu umieszczasz przykładowo:

  try{ //operacje IO musza byc w bloku try/catch bo moga wygenerowac wyjatki
    System.out.println("Podaj a="); //cOUT
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //konwersja na typ znakowy
    String tr=br.readLine(); //cIN
    zmienna=Integer.parseInt(tr); //konwersja do integera
    }
    catch(IOException ioe){
    System.out.println("Error!"); //w razie wystapienia bledu wyrzuc na konsole
    }

 

 

Nie bardzo też rozumiem o co chodzi z tymi wyjątkami.

krotka pilka: w tym przykladzie wyjatkami/bledami moga rzucac operacje IO, wiec umieszcza sie je w bloku try. Jesli wyjatki wystapia, wtedy realizowany jest blok catch. Moga rzucac bledami typu IOException, wiec takie trzeba obsłużyć

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...