2017-08-07 124 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) { 
     ... 
    } 
}); 

在執行的結果,你會得到一個框架有三個字段和一個按鈕。一旦你嘗試做錯了,你會在這些控件下面得到錯誤信息,否則在第三個文本字段中你會得到一個結果。

希望這會有所幫助。祝你好運。

相關問題