实验报告5解析

    技术2022-07-15  45

    1.创建窗口中包含两个文本框和一个命令按钮,用户可在可编辑的文本框中输入数字n,单击命令按钮计算后,另一个不可编辑的文本框显示计算结果1!+2!+…+n!。

    public class work2 { public static void main(String[] args) { jiecheng jie=new jiecheng(); jie.setBounds(300, 300, 300, 500); } } import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; public class jiecheng extends JFrame { public JTextField testin; public JTextField testout; public JButton button; public jianshiqi listener; public jiecheng() { init(); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } void init() { setLayout(new FlowLayout()); testin=new JTextField(5); add(testin); button=new JButton("经计算"); add(button); testout=new JTextField(10); testout.setEditable(false); add(testout); listener=new jianshiqi(); listener.setview(this);//将当前窗口的引用传递给监视器 testin.addActionListener(listener); button.addActionListener(listener); } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class jianshiqi implements ActionListener { jiecheng view; public void setview(jiecheng view) { this.view=view; } public static int jiecheng(int n){ if(n==1) return 1; else return n*jiecheng(n-1); } @Override public void actionPerformed(ActionEvent e) { int n,m=0; String s=view.testin.getText(); try { n=Integer.parseInt(s); for(int i=1;i<=n;i++) { m=m+jiecheng(i); } String sr=String.valueOf(m); view.testout.setText(sr); } catch (Exception e2) { // TODO: handle exception view.testin.setText("请输入数字"); } } }

    2.编写程序,实现简单的计算器

    (1) 用户在窗口中的两个文本框中输入参与运算的两个操作数。 (2) 用户在下拉列表中选择运算符触发ItemEvent,ItemEvent事件的监视器operator(OperatorListener类负责创建)获得运算符,并将运算符传递给ActionEvent事件的监视器computer。 (3) 用户单击按钮触发ActionEvent事件,监视器computer(ComputerListener类负责创建)给出运算结果。

    public class work12 { public static void main(String[] args) { WindowView view=new WindowView(); view.setBounds(100, 100, 390, 360); view.setTitle("计算器"); } } import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class WindowView extends JFrame{ public JTextField innumber1,innumber2;//文本框 public JComboBox<String>choiceFuhao;//下拉列表 public JTextArea textShow;//文本区 public JButton button;//按钮 public OperatorListener operator;//监视ItemEvent事件的监视器 public ComputerListener computer;//监视ActionEvent事件的监视器 public WindowView() { init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void init() { setLayout(new FlowLayout()); innumber1=new JTextField(10); innumber2=new JTextField(10); choiceFuhao=new JComboBox<String>(); button =new JButton("计算"); choiceFuhao.addItem("选择运算符号:"); String[]a= {"+","-","*","/"}; for(int i=0;i<a.length;i++) { choiceFuhao.addItem(a[i]); } textShow=new JTextArea(9,30); operator=new OperatorListener(); computer=new ComputerListener(); operator.setView(this);//将当前窗口的引用传递给监视器 computer.setView(this);//将当前窗口的引用传递给监视器 choiceFuhao.addItemListener(operator);//choiceFuhao是事件源,operator是监视器 button.addActionListener(computer);//button是事件源,computer是监视器 add(innumber1); add(choiceFuhao); add(innumber2); add(button); add(new JScrollPane(textShow)); } } import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class OperatorListener implements ItemListener { WindowView view; public void setView(WindowView view) { this.view=view; } @Override public void itemStateChanged(ItemEvent e) { String fuhao=view.choiceFuhao.getSelectedItem().toString(); view.computer.setFuhao(fuhao); } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ComputerListener implements ActionListener { WindowView view; String fuhao; public void setView(WindowView view) { this.view=view; } public void setFuhao(String s) { this.fuhao=s; } @Override public void actionPerformed(ActionEvent e) { try { double number1=Double.parseDouble(view.innumber1.getText()); double number2=Double.parseDouble(view.innumber2.getText()); double result=0; boolean isShow=true; if(fuhao.equals("+")) { result=number1+number2; }else if(fuhao.equals("-")) { result=number1-number2; }else if(fuhao.equals("*")) { result=number1*number2; }else if(fuhao.equals("/")) { result=number1/number2; }else { isShow=false; } if(isShow) { view.textShow.append(number1+" "+fuhao+" "+number2+"="+result+"\n"); } } catch (Exception e2) { // TODO: handle exception view.textShow.append("\n请输入数字字符\n"); } } }
    Processed: 0.015, SQL: 9