永发信息网

编写一个java application实现如下功能用户通过输入对话框先后输入2个double型数据

答案:2  悬赏:20  手机版
解决时间 2021-01-03 21:07
被除数和除数,做除法运算后消息对话框输出结果。要求除数不能为负数,为此要自定义一个异常类DivideByMinusException(表除数为负数的异常),当除数为负数时提示用户重新输入,并处理NumberFormatException。哪位大神帮忙下应该使用JAVA异常处理try。。catch来做求解
最佳答案
import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.*;

import org.springframework.core.NestedRuntimeException;


public class DivisorFrame extends javax.swing.JFrame {

private javax.swing.JTextField divisor;
private javax.swing.JTextField dividend;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JButton sureBtn;

public DivisorFrame(String title) {
super(title);
//初始化
initComponents();
}

private void initComponents() {

JPanel p1 = new JPanel();
JPanel p2 = new JPanel();

jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
divisor = new javax.swing.JTextField();
dividend = new javax.swing.JTextField();
sureBtn = new javax.swing.JButton();

jLabel1.setText("除数:");
jLabel2.setText("被除数:");

sureBtn.setText("确定");
sureBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
divid(evt);
}
});

this.setLayout(new BorderLayout());
p1.setLayout(new GridLayout(2,2));
p1.add(jLabel1);
p1.add(divisor);
p1.add(jLabel2);
p1.add(dividend);

this.add(p1,BorderLayout.NORTH);
p2.add(sureBtn,BorderLayout.CENTER);
this.add(p2,BorderLayout.CENTER);

this.setSize(600,400);
this.setVisible(true);

pack();
}// </editor-fold>
//GEN-END:initComponents


private void divid(java.awt.event.ActionEvent evt) {
double d_divisor = 0;
double d_dividend = 0;
if(divisor.getText().equals("")){
JOptionPane.showMessageDialog(this, "被除数不能为空", "系统提示", JOptionPane.WARNING_MESSAGE);
divisor.requestFocus();
return;
}
if(dividend.getText().equals("")){
JOptionPane.showMessageDialog(this, "除数不能为空", "系统提示", JOptionPane.WARNING_MESSAGE);
divisor.requestFocus();
return;
}
try {
d_divisor = Double.parseDouble(divisor.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "数据转换异常,请填写数值型数据", "系统提示", JOptionPane.WARNING_MESSAGE);
divisor.setText("");
divisor.requestFocus();
return;
}
try {
d_dividend = Double.parseDouble(dividend.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "数据转换异常,请填写数值型数据", "系统提示", JOptionPane.WARNING_MESSAGE);
dividend.setText("");
dividend.requestFocus();
return;
}
try {
if(d_divisor <0){
divisor.setText("");
divisor.requestFocus();
JOptionPane.showMessageDialog(this, "除数不能为负数,请重新输入除数", "系统提示", JOptionPane.WARNING_MESSAGE);
throw new DivideByMinusException("除数不能为负数!");
}
double result = d_divisor / d_dividend;
JOptionPane.showMessageDialog(this, d_divisor + " / " + d_dividend + " = " + result, "计算结果", JOptionPane.WARNING_MESSAGE);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "数据转换异常,请填写数值型数据", "系统提示", JOptionPane.WARNING_MESSAGE);
dividend.requestFocus();
}
}

class DivideByMinusException extends NestedRuntimeException {

public DivideByMinusException(String msg) {
super(msg);
}
}

public static void main(String [] args){


DivisorFrame df = new DivisorFrame("除法运算,异常处理");
}
}
全部回答
import javax.swing.*; class Test { public static double divide(double d1,double d2) throws DivideByMinusException { if(d2<0) throw new DivideByMinusException("Divisor can't be minus"); if(d2==0) throw new NumberFormatException("divide by zero"); return d1/d2; } public static void main(String[] args) { String str1=JOptionPane.showInputDialog("请输入被除数"); String str2=JOptionPane.showInputDialog("请输入除数"); double num1=Double.parseDouble(str1); double num2=Double.parseDouble(str2); try { double num3=divide(num1,num2); System.out.println(num3); System.exit(0); } catch (Exception e) { e.printStackTrace(); System.exit(0); } } } class DivideByMinusException extends Exception { private static final long serialVersionUID = 1L; public DivideByMinusException(String str) { super(str); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个QQ最多可以添加多少好友
洋庄派出所办公位置在哪啊?好找么?
电脑被禁网了,如何解除禁令?
一块正方形草坪的周长是24米.这块草坪的面积
圆柱需要满足箍筋肢距及隔一拉一的要求吗?
多吃木瓜真的对头发好吗?拜托各位了3Q
Healthy habits for living longerBy keeping
海尔和海信哪个好
想从小生意做起,有没有人能教教我,有耐心有
If you sit near front of the coach, you’l
单选题下列过程中所散失的水分中主要属于结合
阅读下面一段话,按要求完成下列各题。(8分
土豆怎样保存不发芽
如图所示是探究“让线圈转起来”的实验装置图
怎样炖羊肉汤不膻
推荐资讯
单选题我国铁路客运车次为单号表明该列客车A.
单选题1955年,我国发行了第二套人民币,包括
of water makes Death Valley a desert, but
羊毛大衣怎么护理
搜集手抄报 我是一个小学生,我要画一张手抄
win10系统怎么将PDF格式文件转成JPG
堕落同义词
单选题王安石变法要解决的中心问题是A.财政危
有什么办法,能让阿胶融化的快点呢?
作文。(60分)个人的成长,离不开父母的养育
cfvip成长值,,如果我充了300块钱,那得多少
单选题导致中国的外交在20世纪70年代出现重大
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?