第10章 课后作业3、5

课本《Java大学实用教程(第二版)》 耿祥义 张跃平 编著

Code:
  1. package ch10;   
  2.   
  3. import java.awt.Color;   
  4. import java.awt.Dimension;   
  5. import java.awt.FlowLayout;   
  6. import java.awt.event.ActionEvent;   
  7. import java.awt.event.ActionListener;   
  8.   
  9. import javax.swing.Box;   
  10. import javax.swing.JButton;   
  11. import javax.swing.JFrame;   
  12. import javax.swing.JOptionPane;   
  13. import javax.swing.JTextField;   
  14.   
  15. /*  
  16.  *   
  17.  * 3.编写一个应用程序,设计4个按钮,分别命名为"加"、"减"、"乘"、"除";  
  18.  * 还有3个文本框,单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。  
  19.  *   
  20.  * */  
  21. public class Ch10_3 {   
  22.     public static void main(String[] args) {   
  23.         new Key03();   
  24.     }   
  25. }   
  26. class Key03 implements ActionListener{   
  27.     private JButton jb1,jb2,jb3,jb4;//4个按钮,分别命名为"加"、"减"、"乘"、"除"   
  28.     private JTextField jt1,jt2,jt3; //3个文本框   
  29.     private JFrame jf;   
  30.     private Box box1,box2,basebox;   
  31.     public Key03(){   
  32.         jf=new JFrame("计算器v1.0");   
  33.         jf.setBounds(300300400130);   
  34.         jf.setVisible(true);   
  35.         jf.setLayout(new FlowLayout());//两行一列   
  36.            
  37.         jb1=new JButton("加");   
  38.         jb2=new JButton("减");   
  39.         jb3=new JButton("乘");   
  40.         jb4=new JButton("除");   
  41.            
  42.         jb1.addActionListener(this);   
  43.         jb2.addActionListener(this);   
  44.         jb3.addActionListener(this);   
  45.         jb4.addActionListener(this);   
  46.            
  47.         jt1=new JTextField(" ");   
  48.         jt2=new JTextField(" ");   
  49.         jt3=new JTextField(" ");   
  50.            
  51.         //对文本框进行设置大小   
  52.         Dimension dim2=new Dimension(100,20);   
  53.         jt1.setPreferredSize(dim2);   
  54.         jt2.setPreferredSize(dim2);   
  55.         jt3.setPreferredSize(dim2);   
  56.         jt3.setEditable(false); //不允许编辑   
  57.         jt3.setBackground(Color.gray);   
  58.            
  59.         box1=Box.createHorizontalBox();   
  60.         box1.add(jt1);   
  61.         box1.add(Box.createHorizontalStrut(10));   
  62.         box1.add(jt2);   
  63.         box1.add(Box.createHorizontalStrut(10));   
  64.         box1.add(jt3);   
  65.            
  66.         box2=Box.createHorizontalBox();   
  67.         box2.add(jb1);   
  68.         box2.add(Box.createHorizontalStrut(10));   
  69.         box2.add(jb2);   
  70.         box2.add(Box.createHorizontalStrut(10));   
  71.         box2.add(jb3);   
  72.         box2.add(Box.createHorizontalStrut(10));   
  73.         box2.add(jb4);   
  74.            
  75.         basebox=Box.createVerticalBox();   
  76.         basebox.add(box1);   
  77.         basebox.add(Box.createVerticalStrut(10));   
  78.         basebox.add(box2);   
  79.         jf.add(basebox);   
  80.         jf.validate();   
  81.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  82.     }   
  83.     public void actionPerformed(ActionEvent e) {   
  84.         String temp1=jt1.getText().trim();   
  85.         String temp2=jt2.getText().trim();   
  86.         if(temp1.equals("")||temp2.equals("")){//判断是否输入为空值。   
  87.             JOptionPane.showMessageDialog(jf,"文本框不能为空。");   
  88.         }else{   
  89.             double a=0,b=0;   
  90.             try{   
  91.                 a=Double.parseDouble(temp1);   
  92.                 b=Double.parseDouble(temp2);   
  93.             }catch(Exception e1){   
  94.                 JOptionPane.showMessageDialog(jf,"您输入了非法字符,请输入正确的数字。");   
  95.                 return ;//退出   
  96.             }   
  97.             if(e.getSource()==jb1){//+   
  98.                 jt3.setText(""+(a+b));   
  99.                 System.out.println(""+(a+b));   
  100.             }else if(e.getSource()==jb2){//减   
  101.                 jt3.setText(""+(a-b));   
  102.             }else if(e.getSource()==jb3){//乘   
  103.                 jt3.setText(""+(a*b));   
  104.             }else if(e.getSource()==jb4){//除   
  105.                 jt3.setText(""+(a/b));   
  106.             }   
  107.         }   
  108.            
  109.     }   
  110. }  

运行结果:

运行结果

Code:
  1. package ch10;   
  2. //编写有两个文本区的应用程序,当我们在一个文本区中输入若干个数时,另一个文本区同时对输入的数进行   
  3. //求和运算并求出平均值,也就是说随着输入的变化,另一个文本区不断的变化。   
  4. import java.awt.BorderLayout;   
  5. import java.awt.GridLayout;   
  6. import java.util.Vector;   
  7. import java.util.regex.Matcher;   
  8. import java.util.regex.Pattern;   
  9.   
  10. import javax.swing.JFrame;   
  11. import javax.swing.JPanel;   
  12. import javax.swing.JScrollPane;   
  13. import javax.swing.JTextArea;   
  14. import javax.swing.event.DocumentEvent;   
  15. import javax.swing.event.DocumentListener;   
  16.   
  17. public class Ch10_5 {   
  18.     public static void main(String[] args) {   
  19.         new Key5();   
  20.     }   
  21. }   
  22.   
  23. class Key5 implements DocumentListener{   
  24.     private JFrame jf;   
  25.     private JTextArea jta1,jta2;   
  26.     private Pattern p;                  //模式对象   
  27.     private Matcher m;                //匹配对象   
  28.     public Key5(){   
  29.         jf=new JFrame("自动求和与算平均数");   
  30.         jta1=new JTextArea();   
  31.         jta2=new JTextArea();   
  32.            
  33.         JPanel jp=new JPanel(new GridLayout(1,2));   
  34.         jp.add(new JScrollPane(jta1));   
  35.         jp.add(new JScrollPane(jta2));   
  36.         jf.add(jp,BorderLayout.CENTER);   
  37.         jf.validate();   
  38.         (jta1.getDocument()).addDocumentListener(this);   
  39.         jf.setBounds(200200400400);   
  40.         jf.setVisible(true);   
  41.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     
  42.     }   
  43.     public void changedUpdate(DocumentEvent e) {   
  44.         System.out.println("2");   
  45.         jta2.setText(null);//置空   
  46.         String str=jta1.getText();   
  47.         //[^//s//d//p{Punct}]+    
  48.          p=Pattern.compile("[//p{Digit}]+");        //初始化模式对象   
  49.           m=p.matcher(str);         
  50.           Vector<Double> vec=new Vector<Double>();   //使用vector装载所匹配的对象。   
  51.            while(m.find()){   
  52.                String getS=m.group();   
  53.                vec.add(Double.parseDouble(getS));   
  54.            }   
  55.            if(vec!=null){   
  56.                double result=0;   
  57.                for(int i=0;i<vec.size();i++){   
  58.                    result+=(Double)vec.get(i);   
  59.                }   
  60.                jta2.setText(null);   
  61.                jta2.append("总和为:"+result+"/n");   
  62.                jta2.append("平均数:"+result/vec.size());   
  63.            }      
  64.     }   
  65.     public void insertUpdate(DocumentEvent e) {   
  66.         changedUpdate(e);   
  67.     }   
  68.     public void removeUpdate(DocumentEvent e) {   
  69.         changedUpdate(e);   
  70.     }   
  71. }   

运行结果:

 运行结果2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值