Co zmienia słówko static przed int? (i parę innych pytań)

0

Witam. Robię w Javie kalkulator (tak, jestem początkujący) i mam taki pewnie banalny problem bo, w klacie public void actionPerformed(ActionEvent e) linijka System.out.println(intNum); działa tak jak powinna ale w public static void main(String[] args) nie działa (komentarz: //JEDEN 111111111). Co zmienia słówko static przed int, oprócz tego, że można na nim operować w public static void main(String[] args)?

Kod:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Calculator extends JFrame implements ActionListener
{

    static JTextArea screen;
    JButton   b0utton, b1utton, b2utton, b3utton, b4utton, b5utton, b6utton, b7utton, b8utton, b9utton, b10utton, b11utton, b12utton, b13utton, b14utton,
              b15utton, b16utton, b17utton, b18utton, b19utton, b20utton, b21utton, b22utton, b23utton, b24utton, b25utton, b26utton, b27utton;

    static String inScreen = "";
    static int intNum = 0;
    static int intNum2 = 0;
    static int intNumEnd = 0;

    boolean dodawanie = false;
    boolean odejmowanaie = false;
    boolean mnozenie = false;
    boolean dzielenie = false;
    boolean rownasie = false;


    public Calculator()
    {

        setSize(255, 320);
        setResizable(false);
        setTitle("Calculator");
        setLayout(null);

        screen = new JTextArea();
        screen.setBounds(10,40,222, 50);
        screen.setEditable(false);
        screen.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        screen.setFont(new Font("Courier New", Font.ITALIC, 30));
        add(screen);


        //pierwsza kolumna
        b0utton = new JButton("");
        b0utton.setBounds(10, 95, 42, 25);
        b0utton.addActionListener(this);
        add(b0utton);

        b1utton = new JButton("B");
        b1utton.setBounds(10, 125, 42, 25);
        b1utton.addActionListener(this);
        add(b1utton);

        b2utton = new JButton("7");
        b2utton.setBounds(10, 155, 42, 25);
        b2utton.addActionListener(this);
        add(b2utton);

        b3utton = new JButton("4");
        b3utton.setBounds(10, 185, 42, 25);
        b3utton.addActionListener(this);
        add(b3utton);

        b4utton = new JButton("1");
        b4utton.setBounds(10, 215, 42, 25);
        b4utton.addActionListener(this);
        add(b4utton);

        b5utton = new JButton("0");
        b5utton.setBounds(10, 245, 87, 25);
        b5utton.addActionListener(this);
        add(b5utton);

        //druga kolumna
        b6utton = new JButton("");
        b6utton.setBounds(55, 95, 42, 25);
        b6utton.addActionListener(this);
        add(b6utton);

        b7utton = new JButton("");
        b7utton.setBounds(55, 125, 42, 25);
        b7utton.addActionListener(this);
        add(b7utton);

        b8utton = new JButton("8");
        b8utton.setBounds(55, 155, 42, 25);
        b8utton.addActionListener(this);
        add(b8utton);

        b9utton = new JButton("5");
        b9utton.setBounds(55, 185, 42, 25);
        b9utton.addActionListener(this);
        add(b9utton);

        b10utton = new JButton("2");
        b10utton.setBounds(55, 215, 42, 25);
        b10utton.addActionListener(this);
        add(b10utton);

        //trzecia kolumna
        b11utton = new JButton("");
        b11utton.setBounds(100, 95, 42, 25);
        b11utton.addActionListener(this);
        add(b11utton);

        b12utton = new JButton("");
        b12utton.setBounds(100, 125, 42, 25);
        b12utton.addActionListener(this);
        add(b12utton);

        b13utton = new JButton("9");
        b13utton.setBounds(100, 155, 42, 25);
        b13utton.addActionListener(this);
        add(b13utton);

        b14utton = new JButton("6");
        b14utton.setBounds(100, 185, 42, 25);
        b14utton.addActionListener(this);
        add(b14utton);

        b15utton = new JButton("3");
        b15utton.setBounds(100, 215, 42, 25);
        b15utton.addActionListener(this);
        add(b15utton);

        b16utton = new JButton(",");
        b16utton.setBounds(100, 245, 42, 25);
        b16utton.addActionListener(this);
        add(b16utton);

        //czwarta kolumna
        b17utton = new JButton("");
        b17utton.setBounds(145, 95, 42, 25);
        b17utton.addActionListener(this);
        add(b17utton);

        b18utton = new JButton("");
        b18utton.setBounds(145, 125, 42, 25);
        b18utton.addActionListener(this);
        add(b18utton);

        b19utton = new JButton("/");
        b19utton.setBounds(145, 155, 42, 25);
        b19utton.addActionListener(this);
        add(b19utton);

        b20utton = new JButton("*");
        b20utton.setBounds(145, 185, 42, 25);
        b20utton.addActionListener(this);
        add(b20utton);

        b21utton = new JButton("-");
        b21utton.setBounds(145, 215, 42, 25);
        b21utton.addActionListener(this);
        add(b21utton);

        b22utton = new JButton("+");
        b22utton.setBounds(145, 245, 42, 25);
        b22utton.addActionListener(this);
        add(b22utton);

        //piąta kolumna
        b23utton = new JButton("");
        b23utton.setBounds(190, 95, 42, 25);
        b23utton.addActionListener(this);
        add(b23utton);

        b24utton = new JButton("");
        b24utton.setBounds(190, 125, 42, 25);
        b24utton.addActionListener(this);
        add(b24utton);

        b25utton = new JButton("%");
        b25utton.setFont(new Font("Courier New", Font.ITALIC, 14));
        b25utton.setBounds(190, 155, 42, 25);
        b25utton.addActionListener(this);
        add(b25utton);

        b26utton = new JButton("");
        b26utton.setBounds(190, 185, 42, 25);
        b26utton.addActionListener(this);
        add(b26utton);

        b27utton = new JButton("=");
        b27utton.setBounds(190, 215, 42, 55);
        b27utton.addActionListener(this);
        add(b27utton);

    }


    public static void main(String[] args)
    {
        String appStyle = "Nimbus"; //tutaj zmienieać style

        Calculator window = new Calculator();
        window.setDefaultCloseOperation(EXIT_ON_CLOSE);
        window.setVisible(true);

        try
        {
            for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
            {
                if (appStyle.equals(info.getName()))
                {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        }
        catch (Exception e)
        {
            System.out.println("LookAmdFeel Error");
        }

        boolean dodawanie = false;
        boolean odejmowanaie = false;
        boolean mnozenie = false;
        boolean dzielenie = false;
        boolean rownasie = false;


        if (dodawanie = true)
        {
            if (rownasie = true)
            {
                //screen.append(String.valueOf(intNum));
                System.out.println(intNum);                 //JEDEN   111111111
            }
            dodawanie = false;
            rownasie = false;
        }




    }


    @Override
    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();


            if (source==b0utton)
            {
                System.out.println("---");
                System.out.println(intNum);
                System.out.println(intNum2);
                System.out.println(intNumEnd);
                System.out.println("---");
            }



            if (source==b1utton)
            {

            }



            if (source==b2utton)
            {
                intNum = intNum + 7;
            }



            if (source==b3utton)
            {
                intNum = intNum + 4;
                System.out.println(intNum);
            }



            if (source==b4utton)
            {
                intNum = intNum + 1;
                System.out.println(intNum);
            }



            if (source==b5utton)
            {
                intNum = intNum + 0;

            }



            if (source==b6utton)
            {

            }




            if (source==b7utton)
            {

            }



            if (source==b8utton)
            {
                intNum = intNum + 8;
            }



            if (source==b9utton)
            {
                intNum = intNum + 5;
            }



            if (source==b10utton)
            {
                intNum = intNum + 2;
            }



            if (source==b11utton)
            {

            }



            if (source==b12utton)
            {

            }



            if (source==b13utton)
            {
                intNum = intNum + 9;
            }



            if (source==b14utton)
            {
                intNum = intNum + 6;
            }



            if (source==b15utton)
            {
                intNum = intNum + 3;
            }



            if (source==b16utton)
            {
                screen.append(",");
            }



            if (source==b17utton)
            {

            }



            if (source==b18utton)
            {

            }



            if (source==b19utton)//operacja
            {
                dzielenie = true;
            }



            if (source==b20utton)//operacja
            {
                mnozenie = true;
            }



            if (source==b21utton)//operacja
            {
                odejmowanaie = true;
            }



            if (source==b22utton) //operacja
            {
                dodawanie = true;
                System.out.println("dodawanie");
            }



            if (source==b23utton)
            {

            }



            if (source==b24utton)
            {

            }



            if (source==b25utton)//operacja
            {
                screen.append("%");
            }



            if (source==b26utton)
            {

            }



            if (source==b27utton)//operacja
            {
                rownasie = true;
                System.out.println("rownasie");

            }

    }




}
0

Z całym szacunkiem ale poziom pytania jest nieco za niski. Sory ale odpowiedż na takie pytanie można znaleźc w google w 1 minute, no i to jest naprawde poziom bardzo podstawowy...

0

Static oznacza że zmienna należy do klasy a nie instancji klasy (czyli obiektu). Innymi słowy wszystkie obiekty używają tej samej zmiennej w pamięci, a więc jeśli przypiszesz wartość 3 do zmiennej i utworzysz nowy obiekt to w tym obiekcie ta wartość również będzie wynosić 3.

0

Okej. A dlaczego System.out.println(intNum); nie działa w public static void main(String[] args), a działa w public void actionPerformed(ActionEvent e) w którymkolwiek z IFów?

1

Ja widzę ostatnio, że większość osób najpierw zaczyna pisać kod, a potem się uczyć... Ta... słuchajcie Aniserowicza, ale nie do końca tak jest.
Trzeba wziąć do ręki książeczkę i ją przestudiować - wszystkie elementy języka.
Potem owszem -> case study i pisz sobie projekty.

Nie wejdziesz do samolotu i nie polecisz. Najpierw musisz się dowiedzieć do czego są te wszystkie przyciski :)

No i jak piszesz aplikację GUI to po prostu musisz liznąć co to jest MVC, bo inaczej kit wychodzi.
Moja rada: został swinga i napisz to w konsoli.

0

A jaką książkę polecasz? Mógłbyś jeszcze odpowiedzieć na:

A dlaczego System.out.println(intNum); nie działa w public static void main(String[] args), a działa w public void actionPerformed(ActionEvent e) w którymkolwiek z IFów?

0
 if (rownasie = true)
 {
     //screen.append(String.valueOf(intNum));
     System.out.println(intNum);                 //JEDEN   111111111
 }

Zwróć uwagę na if (rownasie = true), zamiast sprawdzać wartość, to ją zmieniasz.
Masz tę samą sytuację w kilku miejscach - jeden = zamiast ==.
Domyślam się, że powinno tam być if (rownasie == true)

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