2017-08-07 104 views
-1

我需要改变我的小程序,所以如果零,它必须说无效的除数。如果零,那么这必须说无效的除数,但不知道如何做到这一点

如前所述,我很新的这一点,我刚才似乎无法推测出来:

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

你的问题不清楚 – Prasath

+3

A)java!= javascript - 所以不要使用无意义的标签B)谈论没有道理:学习** applets **。这是**死亡**技术。了解如何使用Swing JFrames或JavaFX应用程序。但忘记小程序。浪费时间! – GhostCat

回答

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

对不起,延迟回复。这工作谢谢你! –

+0

太棒了!请不要犹豫,接受答案。 –

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

    } 
+0

它抛出'java.lang.ArithmeticException'。 – saka1029

+0

其他部分丢失,我编辑了代码。 – Akjun

1

在您进行分区之前,您只需检查像这样的数字并在必要时输出错误。

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

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

应用程序试图在零上抛出它抛出java.lang.ArithmeticException:/by zero(类型RuntimeException)。你可以做的是添加一个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方法。主要的魔力发生在那里。

这个例子适用于java 8,所以如果你使用以前的版本,用匿名类替换 lambda。

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

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

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

相关问题