我需要更改我的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));
}
}
我有什么想法可以解决这个问题吗?
答案 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) { ... } });
在执行结果中,您将获得一个包含三个字段和一个按钮的框架。一旦你尝试做错了什么,你会在这些控件下得到错误信息,否则在第三个文本字段中你会得到一个结果。
希望这会有所帮助。祝你好运。