Исключения в методе слушателя - Java

Узнай цену своей работы

Формулировка задачи:

Я пишу пытаюсь написать калькулятор для подсчета длины спиц на велосипедном колесе, при нажатии на баттон при условии заполненных полей должен проводиться рассчет и вывод результата (пока что через запись в метку и вывод на фрэйм), если какое-то поле не заполнено должно сработать исключение, но у меня получается, что я заполняю все поля валидными значениями у меня все= срабатывает исключение! Не могу разобраться почему так. За быдлокод сорри сорри, по другому пока-что не уметь
package ru.kopernik;
 
import ru.kopernik.view.MainFrame;
 
import javax.swing.*;
import java.awt.*;
 
public class Main {
 
    public static void main(String... args) throws InterruptedException {
 
        MainFrame frame = new MainFrame("Калькулятор для расчета длины спиц");
 
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500,500);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new FlowLayout());
 
    }
}
**********************************
package ru.kopernik.view;
 
import javax.swing.*;
 
import ru.kopernik.logic.Calculation;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class MainFrame extends JFrame {
 
    Listener listener = new Listener();
 
    public JTextField spokeCountText, widthSleeveText, widthFlancSleeveText,
                betweenFlangesText, diameterHoleLeftText, diameterHoleRightText, diameterRimERDText,
                offsetText, crestCountLeftText, crestCountRightText, diameterHoleSpokeText;
 
    public int spokeCount, crestCountL, crestCountR;
 
    public double widthSleeve, widthFlangeSleeve, betweenFlanges, diameterHoleLeft, diameterHoleRight,
                diameterRimERD, offset;
 
    public JButton calculation;
 
    public JLabel wl, wr;
 
    public MainFrame(){
 
    }
 
    public MainFrame(String title){
        super(title);
 
        calculation = new JButton("Посчитать");
 
        JLabel crestCountLeftLabel = new JLabel("Количество крестов слева: ");
        JLabel crestCountRightLabel = new JLabel("Количество крестов справа: ");
        JLabel spokeCountLabel = new JLabel("Количество спиц: ");
        JLabel widthSleeveLabel = new JLabel("Ширина всей втулки: ");
        JLabel widthFlancSleeveLabel = new JLabel("От левого края втулки до \n" +
                                                    "внутренней стороны левого фланца: ");
        JLabel betweenFlangesLabel = new JLabel("Между фланцами: ");
        JLabel diameterHoleLeftLabel = new JLabel("Диаметр отверстий левого фланца по центрам отверстий: ");
        JLabel diameterHoleRightLabel = new JLabel("Диаметр отверстий правого фланца по центрам отверстий: ");
        JLabel diameterRimERDLabel = new JLabel("Диаметр обода (ERD): ");
        JLabel offsetLabel = new JLabel("Смещение: ");
        JLabel diameterHoleSpokeLabel = new JLabel("Диаметр отверстия под спицу: ");
 
        wl = new JLabel("");
        wr = new JLabel("");
 
        spokeCountText = new JTextField(2);
        widthSleeveText = new JTextField(2);
        widthFlancSleeveText = new JTextField(2);
        betweenFlangesText = new JTextField(2);
        diameterHoleLeftText = new JTextField(2);
        diameterHoleRightText = new JTextField(2);
        diameterRimERDText = new JTextField(2);
        offsetText = new JTextField(2);
        crestCountLeftText = new JTextField(2);
        crestCountRightText = new JTextField(2);
        diameterHoleSpokeText = new JTextField(2);
 
        add(crestCountLeftLabel);
        add(crestCountLeftText);
        add(crestCountRightLabel);
        add(crestCountRightText);
        add(spokeCountLabel);
        add(spokeCountText);
        add(widthSleeveLabel);
        add(widthSleeveText);
        add(widthFlancSleeveLabel);
        add(widthFlancSleeveText);
        add(betweenFlangesLabel);
        add(betweenFlangesText);
        add(diameterHoleLeftLabel);
        add(diameterHoleLeftText);
        add(diameterHoleRightLabel);
        add(diameterHoleRightText);
        add(diameterRimERDLabel);
        add(diameterRimERDText);
        add(offsetLabel);
        add(offsetText);
        add(diameterHoleSpokeLabel);
        add(diameterHoleSpokeText);
        add(wl);
        add(wr);
 
        add(calculation);
 
        calculation.addActionListener(listener);
 
    }
 
    public class Listener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent summ) {
 
            try {
 
                if ((summ.getSource() == calculation)) {
 
                    spokeCount = Integer.parseInt(spokeCountText.getText());
 
                    crestCountL = Integer.parseInt(crestCountLeftText.getText());
 
                    crestCountR = Integer.parseInt(crestCountRightText.getText());
 
                    widthSleeve = Double.parseDouble(widthSleeveText.getText());
 
                    widthFlangeSleeve = Double.parseDouble(widthFlancSleeveText.getText());
 
                    betweenFlanges = Double.parseDouble(betweenFlangesText.getText());
 
                    diameterHoleLeft = Double.parseDouble(diameterHoleLeftText.getText());
 
                    diameterHoleRight = Double.parseDouble(diameterHoleRightText.getText());
 
                    diameterRimERD = Double.parseDouble(diameterRimERDText.getText());
 
                    offset = Double.parseDouble(offsetText.getText());
 
                        Calculation calc = new Calculation();
 
                        calc.calculationWl(widthSleeve, widthFlangeSleeve, betweenFlanges);
                        calc.calculationWr(betweenFlanges);
                        System.out.println(10);
                }
 
            } catch (Exception ex) {JOptionPane.showMessageDialog(null, "Error");}
 
        }
    }
}
**********************************
package ru.kopernik.logic;
 
import ru.kopernik.view.MainFrame;
 
public class Calculation {
 
    double Wl, Wr, b;
    String wlRes;
    String wrRes;
 
    MainFrame mainFrame = new MainFrame();
 
    public void calculationWl(double widthSleeve, double widthFlangeSleeve, double betweenFlanges){
        this.b = widthSleeve - (widthFlangeSleeve + betweenFlanges);
        this.Wl = (betweenFlanges / 2) - widthFlangeSleeve;
        wlRes = "Wl = " + Wl;
        mainFrame.wl.setText(wlRes);
    }
    public void calculationWr(double betweenFlanges){
        this.Wr = (betweenFlanges / 2) - b;
        wrRes = "Wr = " + Wr;
        mainFrame.wr.setText(wrRes);
    }
 
    public double calculationSpokeLength(){
       // SpokeLengthx(x = L,x = R) = Math.sqrt(Wx^2+Dx^2+ERD^2-2*Dx*ERD*cos(360/(N/2)*K));   квадраты и косинус прописать
        return .0;
    }
 
}

Решение задачи: «Исключения в методе слушателя»

textual
Листинг программы
} catch (Exception ex) {
    ex.printStackTrace();
    JOptionPane.showMessageDialog(null, "Error");
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5