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

时间:2017-08-07 09:15:13

标签: java swing applet

我需要更改我的Applet,所以如果Zero必须说无效的除数。

如上所述,我对此非常陌生,我似乎无法弄明白:

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));
        }
    }

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

5 个答案:

答案 0 :(得分:1)

在进行划分之前,您只需检查这样的数字,并在必要时打印错误。

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

答案 1 :(得分:0)

我猜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语句:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

答案 2 :(得分:0)

以下内容如何:

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));
    }
}

答案 3 :(得分:0)

在划分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));
    }

    }

答案 4 :(得分:0)

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

应用程序尝试除以零,它会抛出java.lang.ArithmeticException: / by zero(类型RuntimeException)。你可以做的是添加一个try-catch块,它会显示出错的地方。

我创建了一个基于swing而不是applet的快速示例,您可以尝试使用它来满足您的需求:

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。主要的魔法发生在那里。

  

此示例适用于java 8,因此如果使用以前的版本替换   lambda与匿名类。

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
         ...
    }
});

在执行结果中,您将获得一个包含三个字段和一个按钮的框架。一旦你尝试做错了什么,你会在这些控件下得到错误信息,否则在第三个文本字段中你会得到一个结果。

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