Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果为零,则必须表示除数无效,但不知道如何执行此操作_Java_Swing_Applet - Fatal编程技术网

Java 如果为零,则必须表示除数无效,但不知道如何执行此操作

Java 如果为零,则必须表示除数无效,但不知道如何执行此操作,java,swing,applet,Java,Swing,Applet,我需要更改我的小程序,所以如果为零,它必须表示无效除数 如前所述,我对这一点非常陌生,我似乎无法理解: package JVA_Assessment_2; import java.awt.*; import java.applet.*; import java.awt.event.*; public class Q1 extends Applet implements ActionListener{ TextField text1,text2,output

我需要更改我的小程序,所以如果为零,它必须表示无效除数

如前所述,我对这一点非常陌生,我似乎无法理解:

package JVA_Assessment_2;

import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;

    public class Q1 extends Applet implements ActionListener{
      TextField text1,text2,output;
      Label label1,label2,label3;
      Button button;
      public void init(){
        setLayout(null);
        label1 = new Label("Enter Number1: ");
        label1.setBounds(20,20,100,20);
        add(label1);

        text1 = new TextField(5);
        text1.setBounds(150,20,100,20);
        add(text1);

        label2 = new Label("Enter Number2: ");
        label2.setBounds(20,50,100,20);
        add(label2);

        text2 = new TextField(5);
        text2.setBounds(150,50,100,20);
        add(text2);

        label3 = new Label("Sum of Two Numbers: ");
        label3.setBounds(20,80,130,20);
        add(label3);

        output = new TextField(5);
        output.setBounds(150,80,100,20);
        add(output);

        button = new Button("Sum");
        button.setBounds(150,110,100,20);
        add(button);

        button.addActionListener(this);
        }
        public void actionPerformed(ActionEvent ae){
        int num1=Integer.parseInt(text1.getText());
        int num2=Integer.parseInt(text2.getText());
        int sum=num1/num2;
        output.setText(Integer.toString(sum));
        }
    }

有什么办法可以解决这个问题吗?

我想num2就是你所说的变量,试试这个:

    int num2=Integer.parseInt(text2.getText());
    if (num2 == 0) {
        output.setText("Invalid divisor");
    } else {
        int sum=num1/num2;
        output.setText(Integer.toString(sum));
    }

阅读有关if语句的更多信息:

以下内容如何:

public void actionPerformed(ActionEvent ae){
    int num1=Integer.parseInt(text1.getText());
    int num2=Integer.parseInt(text2.getText());
    if (num2 == 0) {
        output.setText("Cannot divide by zero");
    } else {
        int sum=num1/num2;
        output.setText(Integer.toString(sum));
    }
}

在除以num2之前,应该检查它是否不等于零

public void actionPerformed(ActionEvent ae){

    int num1=Integer.parseInt(text1.getText());
    int num2=Integer.parseInt(text2.getText());
    If (num2 == 0)
    {
       JOptionPane.showMessageDialog(null, "Invalid divisor");
    }
    else
    {
    int sum=num1/num2;
    output.setText(Integer.toString(sum));
    }

    }

在进行除法之前,您只需像这样检查数字,并在必要时打印错误

if (num2 == 0){
    output.setText("invalid divisor");
}
else {
    int sum=num1/num2;
    output.setText(Integer.toString(sum));
}

似乎不适当行为的主要原因是缺少异常处理程序。换句话说,您的应用程序在后台抛出一个异常,并且不会以某种方式进行处理

应用程序试图将抛出的
java.lang.arithmetricException:/0除以0(运行时异常的类型)。您可以做的是添加一个try-catch块,该块将显示出现了问题

我创建了一个基于swing而非小程序的快速示例,您可以根据自己的需要尝试使用它:

import javax.swing.*;
import java.awt.*;

public class MainClass {

    public static final String CALCULATE_BUTTON = "Calculate";

    public static void main(String... args) {
        JFrame frame = new JFrame();

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        JTextField operandOneField = new JTextField(5);
        JTextField operandTwoField = new JTextField(5);
        JTextField resultField = new JTextField(5);
        JLabel exceptionTracker = new JLabel();

        JButton button = new JButton(CALCULATE_BUTTON);
        button.addActionListener(s -> {
            exceptionTracker.setText(null);
            resultField.setText(null);

            String operandOneValue = operandOneField.getText();
            String operandTwoValue = operandTwoField.getText();
            try {
                int result = Integer.parseInt(operandOneValue) / Integer.parseInt(operandTwoValue);
                resultField.setText(String.valueOf(result));
            } catch (Exception ex) {
                ex.printStackTrace();
                exceptionTracker.setText(ex.getMessage());
            }
        });

        panel.add(operandOneField);
        panel.add(operandTwoField);
        panel.add(button);
        panel.add(resultField);
        panel.add(exceptionTracker);

        frame.add(panel);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
注意
addActionListener
方法的lambda。主要的魔法发生在那里

本例适用于Java8,因此如果使用以前的版本,请替换 具有匿名类的lambda

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
         ...
    }
});
在执行的结果中,您将得到一个包含三个字段和一个按钮的帧。一旦您尝试做错事,您将在这些控件下收到错误消息,否则在第三个文本字段中您将得到结果


希望这会有所帮助。祝你好运。

你的问题不清楚a)java!=javascript-所以不要使用没有意义的标签B)谈论没有意义:研究小程序。这是过时的技术。了解如何使用Swing JFrames或JavaFX应用程序。但忘了小程序吧。浪费时间!它抛出
java.lang.arithmetricException