Исключение в потоке "AWT-EventQueue-0" java .lang.ArithmeticException: / по нулю в программе тригонометрии - PullRequest
0 голосов
/ 26 мая 2020

Привет и спасибо, что нашли время, чтобы увидеть мой вопрос. У меня действительно проблема с кодом. Я пытаюсь создать программу, которая может спросить вас о ваших значениях (гипотенуза, смежная и противоположная) и дать ответ SIN, COS или TAN. Проблема в том, что когда я запускаю свою программу и отвечаю, какую из функций я хотел бы использовать, я получаю следующее сообщение об ошибке: Exception in thread "AWT-EventQueue-0" java .lang.ArithmeticException: / by zero. Я не понимаю, что это значит. Если вы можете помочь, большое спасибо!

                                    HERE IS MY CODE:
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;

public class Main implements ActionListener, ChangeListener {

private static JLabel hypo;
private static JLabel adj;
private static JLabel opp;
// Separate
private static JTextField hypoText;
private static JTextField adjText;
private static  JTextField oppText;
// Separate
private static JLabel finalAnswer;
// Separate
private static JButton submit;
// Separate
private static int hypotenuse;
private static int adjacent;
private static int opposite;
// Separate
private static JRadioButton sinSelect;
private static JRadioButton cosSelect;
private static JRadioButton tanSelect;

public static void main(String[] args) {
    new Main();

    JPanel panel = new JPanel();
    JFrame frame = new JFrame("Trigonometry");
    frame.setResizable(false);
    frame.setSize(1004, 556);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(panel);

    panel.setLayout(null);

    hypo = new JLabel("Hypotenuse:");
    hypo.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    hypo.setBounds(103, 112, 148, 54);
    panel.add(hypo);

    adj = new JLabel("Adjacent:");
    adj.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    adj.setBounds(103, 203, 148, 54);
    panel.add(adj);

    opp = new JLabel("Opposite:");
    opp.setToolTipText("");
    opp.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    opp.setBounds(103, 303, 148, 54);
    panel.add(opp);

    hypoText = new JTextField();
    hypoText.setColumns(10);
    hypoText.setBounds(239, 120, 205, 32);
    hypoText.setToolTipText("Enter hypotenuse value");
    panel.add(hypoText);

    adjText = new JTextField();
    adjText.setColumns(10);
    adjText.setBounds(239, 211, 205, 32);
    adjText.setToolTipText("Enter adjacent value");
    panel.add(adjText);

    oppText = new JTextField();
    oppText.setColumns(10);
    oppText.setBounds(239, 303, 205, 32);
    oppText.setToolTipText("Enter opposite value");
    panel.add(oppText);

    submit = new JButton("Submit");
    submit.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    submit.setBounds(658, 202, 243, 90); // submit button
    submit.addActionListener(new Main());
    submit.setToolTipText("Submit your answers");
    panel.add(submit);

    finalAnswer = new JLabel("Enter your hypotenuse, adjacent and opposite values.");
    finalAnswer.setFont(new Font("Vivaldi", Font.PLAIN, 24)); // answer text
    finalAnswer.setBounds(283, 428, 403, 90);
    panel.add(finalAnswer);

    sinSelect = new JRadioButton("SIN");
    sinSelect.setVisible(false);
    sinSelect.addChangeListener(new Main());
    sinSelect.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    sinSelect.setBounds(370, 63, 174, 60);
    panel.add(sinSelect);

    cosSelect = new JRadioButton("COS");
    cosSelect.setVisible(false);
    cosSelect.addChangeListener(new Main());
    cosSelect.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    cosSelect.setBounds(370, 132, 174, 60);
    panel.add(cosSelect);

    tanSelect = new JRadioButton("TAN");
    tanSelect.setVisible(false);
    tanSelect.setFont(new Font("Vivaldi", Font.PLAIN, 24));
    tanSelect.setBounds(370, 197, 174, 60);
    panel.add(tanSelect);

    frame.setVisible(true);


}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == submit) {
        String hypoString = hypoText.getText();
        double hypotenuse = Double.parseDouble(hypoString);
        String adjString = adjText.getText();
        double adjacent = Double.parseDouble(adjString);
        String oppString = oppText.getText();
        double opposite = Double.parseDouble(oppString);

        hypo.setVisible(false);
        adj.setVisible(false);
        opp.setVisible(false);
        hypoText.setVisible(false);
        adjText.setVisible(false);
        oppText.setVisible(false);
        submit.setVisible(false);
        sinSelect.setVisible(true);
        cosSelect.setVisible(true);
        tanSelect.setVisible(true);

        finalAnswer.setText("Please pick what you want to find.");

    }

}

@Override
public void stateChanged(ChangeEvent e) {
    if(sinSelect.isSelected() == true) {
        cosSelect.setVisible(false);
        tanSelect.setVisible(false);
        double finalSin = opposite / hypotenuse;
        finalAnswer.setText("Your answer is " + finalSin);
    } else if(cosSelect.isSelected() == true) {
        sinSelect.setVisible(false);
        tanSelect.setVisible(false);
        double finalCos = adjacent / hypotenuse;
        finalAnswer.setText("Your answer is " + finalCos);
    } else if(tanSelect.isSelected() == true) {
        sinSelect.setVisible(false);
        cosSelect.setVisible(false);
        double finalTan = opposite / adjacent;
        finalAnswer.setText("Your answer is " + finalTan);
    }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...