Привет и спасибо, что нашли время, чтобы увидеть мой вопрос. У меня действительно проблема с кодом. Я пытаюсь создать программу, которая может спросить вас о ваших значениях (гипотенуза, смежная и противоположная) и дать ответ 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);
}
}
}