• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java- problem z else if

Object Storage Arubacloud
0 głosów
439 wizyt
pytanie zadane 25 października 2020 w Java przez Poczatkujacy011 Nowicjusz (120 p.)

Cześć Wam,

Od jakiegoś czasu zająłem się nauką języka JAVA.

I doszedłem do problemu dla mnie "nie do przejścia", chciałbym by po wybraniu JRadioButtona zmieniał mi się system obliczeń za pomocą komendy "else if" jednak wyskakuje mi błąd i podkreśla. Bez tego obawiam się ze nie zmieni im się sposób obliczania.

poniżej przedstawiam kod:

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

public interface Interface {

    class Main extends JFrame implements ActionListener {
        JButton wyjscie, przelicz;
        JLabel LabelPrzywitanie, LabelMetric, LabelQuantity, LabelLength, LabelWidth, LabelHeight, LabelPallet, LabelCbm, LabelCw;
        JTextField TextQuantity, TextLength, TextWidth, TextHeight, TextPalletUs, TextCbmUs, TextCwUs, TextPalletEu,TextCbmEu, TextCwEu;
        ButtonGroup ButtonsWybor;
        JRadioButton RadioUs, RadioEu;

        double ObliczenieQuantityUs, OobliczenieLengthUs, ObliczenieWidthUs, OblicznieHeightUs, OoblicznieCbmUs, OblicznieCwUs, ObliczenieQuantityEu, ObliczenieLengthEu, ObliczenieWidthEu, OblicznieHeightEu, OoblicznieCbmEu, OblicznieCwEu;
        char Zx = 'x';

        public Main() {
            setSize(400, 300);
            setTitle("Demo");
            setLayout(null);

            //  RADIO BUTTONS

            ButtonsWybor = new ButtonGroup();

            RadioEu = new JRadioButton("EU", true);
            RadioEu.setBounds(150,45,40,20);
            ButtonsWybor.add(RadioEu);
            add(RadioEu);
            RadioEu.addActionListener(this);
            RadioEu.setToolTipText("EU metric system");

            RadioUs = new JRadioButton("US", false);
            RadioUs.setBounds(190,45,50,20);
            ButtonsWybor.add((RadioUs));
            add(RadioUs);
            RadioUs.addActionListener(this);
            RadioUs.setToolTipText("US metric system");

            //BUTTONS

            przelicz = new JButton("Przelicz");
            przelicz.setBounds(20, 195, 100, 20);
            add(przelicz);
            przelicz.addActionListener(this);

            wyjscie = new JButton("Wyjście");
            wyjscie.setBounds(120, 195, 100, 20);
            add(wyjscie);
            wyjscie.addActionListener(this);


            // LABELS IN

            LabelPrzywitanie = new JLabel("Demo");
            LabelPrzywitanie.setBounds(100, 10, 300, 30);
            add(LabelPrzywitanie);

            LabelMetric = new JLabel("Chose metric system:");
            LabelMetric.setBounds(20,40,200,30);
            add(LabelMetric);

            LabelQuantity = new JLabel("Quantity:");
            LabelQuantity.setBounds(20, 65, 50, 30);
            add(LabelQuantity);

            LabelLength = new JLabel("Length:");
            LabelLength.setBounds(20, 95, 50, 30);
            add(LabelLength);

            LabelWidth = new JLabel("Width:");
            LabelWidth.setBounds(20, 125, 50, 30);
            add(LabelWidth);

            LabelHeight = new JLabel("Height:");
            LabelHeight.setBounds(20, 155, 50, 30);
            add(LabelHeight);

            // LABELS OUT

            LabelPallet = new JLabel("Pallet in CM:");
            LabelPallet.setBounds(165, 65, 70, 30);

            LabelCbm = new JLabel("CBM:");
            LabelCbm.setBounds(165, 105, 85, 30);

            LabelCw = new JLabel("C.W.:");
            LabelCw.setBounds(165, 145, 85, 30);

            // TEXTFIELDS IN

            TextQuantity = new JTextField("");
            TextQuantity.setBounds(75, 74, 50, 18);
            add(TextQuantity);
            TextQuantity.addActionListener(this);
            TextQuantity.setToolTipText("Enter quantity");


            TextLength = new JTextField("");
            TextLength.setBounds(75, 104, 50, 18);
            add(TextLength);
            TextLength.addActionListener(this);
            TextLength.setToolTipText("Enter length of your shipment");

            TextWidth = new JTextField("");
            TextWidth.setBounds(75, 134, 50, 18);
            add(TextWidth);
            TextWidth.addActionListener(this);
            TextWidth.setToolTipText("Enter width of your shipment");


            TextHeight = new JTextField("");
            TextHeight.setBounds(75, 164, 50, 18);
            add(TextHeight);
            TextHeight.addActionListener(this);
            TextHeight.setToolTipText("Enter height of your shipment");

            // TEXTFIELDS OUT US

            TextPalletUs = new JTextField("");
            TextPalletUs.setBounds(240, 74, 135, 18);

            TextCbmUs = new JTextField("");
            TextCbmUs.setBounds(240, 114, 135, 18);

            TextCwUs = new JTextField("");
            TextCwUs.setBounds(240, 154, 135, 18);

            // TEXTFIELDS OUT EU

            TextPalletEu = new JTextField("");
            TextPalletEu.setBounds(240, 74, 135, 18);

            TextCbmEu = new JTextField("");
            TextCbmEu.setBounds(240, 114, 135, 18);

            TextCwEu = new JTextField("");
            TextCwEu.setBounds(240, 154, 135, 18);


        }

        public static void main(String[] args) {
            Main okno = new Main();
            okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            okno.setVisible(true);
        }


        @Override
        public void actionPerformed(ActionEvent e)

        {

            // PROGRAMOWANIE BUTTONOW

            Object zrodlo = e.getSource();

            if (zrodlo==wyjscie)
            {
                dispose();
            }
            else if (zrodlo==przelicz || zrodlo==TextQuantity || zrodlo==TextLength || zrodlo==TextWidth || zrodlo==TextHeight);
            {
                repaint();
                add(LabelPallet);
                add(LabelCbm);
                add(LabelCw);
            }

            if (zrodlo==RadioEu);
            {
                add(TextPalletEu);
                add(TextCbmEu);
                add(TextCwEu);

                // PROGRAMOWANIE TEXFIELDOW IN EU

                ObliczenieQuantityEu = Double.parseDouble(TextQuantity.getText());
                ObliczenieLengthEu = Double.parseDouble(TextLength.getText());
                ObliczenieWidthEu = Double.parseDouble(TextWidth.getText());
                OblicznieHeightEu = Double.parseDouble(TextHeight.getText());

                OoblicznieCbmEu = ((ObliczenieLengthEu / 100) * (ObliczenieWidthEu / 100) * (OblicznieHeightEu / 100) * ObliczenieQuantityEu);
                OblicznieCwEu = OoblicznieCbmEu * 166.66666666666;


                // PROGRAMOWANIE TEXTFIELDOW OUT EU

                TextPalletEu.setText(String.valueOf(ObliczenieLengthEu) + Zx + String.valueOf(ObliczenieWidthEu) + Zx + String.valueOf(OblicznieHeightEu));
                TextCbmEu.setText(String.valueOf(OoblicznieCbmEu));
                TextCwEu.setText(String.valueOf(OblicznieCwEu));
            }
            if (zrodlo==RadioUs);
            {
                add(LabelPallet);
                add(LabelCbm);
                add(LabelCw);
                add(TextPalletUs);
                add(TextCbmUs);
                add(TextCwUs);

                // PROGRAMOWANIE TEXTFIELDOW IN US

                ObliczenieQuantityUs = Double.parseDouble(TextQuantity.getText());
                OobliczenieLengthUs = Double.parseDouble(TextLength.getText());
                ObliczenieWidthUs = Double.parseDouble(TextWidth.getText());
                OblicznieHeightUs = Double.parseDouble(TextHeight.getText());

                OobliczenieLengthUs = OobliczenieLengthUs * 2.54;
                ObliczenieWidthUs = ObliczenieWidthUs * 2.54;
                OblicznieHeightUs = OblicznieHeightUs * 2.54;

                OoblicznieCbmUs = ((OobliczenieLengthUs / 100) * (ObliczenieWidthUs / 100) * (OblicznieHeightUs / 100) * ObliczenieQuantityUs);
                OblicznieCwUs = OoblicznieCbmUs * 166.66666666666;

                // PROGRAMOWANIE TEXTFIELDOW OUT US

                TextPalletUs.setText(String.valueOf(OobliczenieLengthUs) + Zx + String.valueOf(ObliczenieWidthUs) + Zx + String.valueOf(OblicznieHeightUs));
                TextCbmUs.setText(String.valueOf(OoblicznieCbmUs));
                TextCwUs.setText(String.valueOf(OblicznieCwUs));
            }
        }
    }
}

 

komentarz 25 października 2020 przez ScriptyChris Mędrzec (190,190 p.)

jednak wyskakuje mi błąd i podkreśla

Możesz pokazać treść tego błędu? 

komentarz 25 października 2020 przez Poczatkujacy011 Nowicjusz (120 p.)
przeniesione 25 października 2020 przez HaKIM
Jak daję else if to:

java: 'else' without 'if'

jednak jak używam samego if to gdy JRadioButton zmieniam na "US" to:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at pl.IMPORTtest.Interface$Main.actionPerformed(Interface.java:181)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

2 odpowiedzi

+3 głosów
odpowiedź 25 października 2020 przez tangarr Mędrzec (154,780 p.)

W kodzie, który umieściłeś nie ma żadnego niepoprawnego użycia słowa kluczowego else.

Natomiast masz kilka niepoprawnych użyć dyrektywy if.

if (zrodlo==RadioEu);
{
    //blok kodu
}

Ten średnik po instrukcji if powoduje zakończenie ciągu instrukcji if/else.
Kod bloku wykona się niezależnie od wyniku instrukcji if. Zastanów się nad zmianą edytora kodu. Dobry edytor powinien zaraportować takie błędy.

komentarz 25 października 2020 przez VBService Ekspert (253,100 p.)
edycja 25 października 2020 przez VBService

@Poczatkujacy011

Jedynie gdy kod, który ma się wykonać po if-ie, jest "krótki", taka składania jest prawidłowa:

if (zrodlo==RadioEu) repaint();
. . . // dalsza część kodu po if-ie
add(LabelPallet);
add(LabelCbm);
add(LabelCw);

. . .

Czyli do poprawienia linie (usunięcie średnika):

163 else if (zrodlo==przelicz || zrodlo==TextQuantity || zrodlo==TextLength ||
                   zrodlo==TextWidth || zrodlo==TextHeight);
171 if (zrodlo==RadioEu);
194 if (zrodlo==RadioUs);

0 głosów
odpowiedź 25 października 2020 przez Wiciorny Ekspert (269,710 p.)

Jak koledzy pisali u Ciebie zaraz po rozpoczęciu dyrektywy if ... ją kończysz, blok który jest po niej, nie wykonuje się to jest w ogóle błędny zapis, bo 

if (zrodlo==RadioUs);

ten średnik nie powinien tu mieć miejsce, stąd ... kończysz dyrektywę i "else if" nie widzi wyżej wymienionego bloku przez co dostajesz błąd java: 'else' without 'if'

Mimo że w pierwszym etapie sama pierwsza instrukcja jest poprawna to niestety, elfe if kończysz średnikiem 

 else if (zrodlo==przelicz || zrodlo==TextQuantity || zrodlo==TextLength
 || zrodlo==TextWidth || zrodlo==TextHeight);

co właśnie powoduje wyżej wymieniony problem .
Kolejny błąd to błąd wyraźnie opisany w tych linijkach związany z typem 

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at pl.IMPORTtest.Interface$Main.actionPerformed(Interface.java:181)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at

 

Podobne pytania

0 głosów
2 odpowiedzi 773 wizyt
pytanie zadane 21 lipca 2020 w Java przez T100 Obywatel (1,450 p.)
0 głosów
1 odpowiedź 506 wizyt
pytanie zadane 7 sierpnia 2017 w Java przez LukasHardwares Początkujący (490 p.)
+1 głos
3 odpowiedzi 893 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...