第10章 课后作业3、5

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

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

运行结果:

运行结果

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

运行结果:

运行结果2

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值