【Java】编写一个小应用程序计算输入数字的和、平均值

  • 说明:这是武汉理工大学计算机学院【Java语言程序设计】课程的第二次实验:编写一个小应用程序计算输入数字的和、平均值
  • >>点击查看WUTer计算机专业实验汇总
  • 谨记:纸上得来终觉浅,绝知此事要躬行。

Java语言程序设计--实验2:文本框、文本区和布局的设计

实验目的:

通过编写一个Java GUI应用程序,熟悉Java GUI应用程序的结构和开发过程;掌握面向对象程序设计中的“封装和继承”的基本原理,“类、对象和接口”的基本概念、以及“Java的事件处理机制”、“图形用户界面设计”技术。

实验内容:

问题描述:

自己构思,编写一个具有如下布局的小应用程序,要求当在上面的文本区中输入若干数时,下面的文本框同时对输入的数进行求和运算并求出平均数。即随着输入的变化,文本框不断更新求和及平均值。

基本要求:

进一步熟悉小应用程序的结构和开发过程;掌握数组的创建和使用方法;掌握文本框和文本区的使用方法;掌握接口的使用方法,掌握基本组件的事件处理机制;掌握java.awt包的布局类使用方法。

实验代码:

package test2;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.StringTokenizer;
import javax.swing.JTextPane;

public class test2 extends JFrame {

	private JPanel contentPane;
	private JTextPane numberField;
	private JTextField sumField;
	private JTextField aveField;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					test2 frame = new test2();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public test2() {
		super("第二次实验");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 395, 271);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		numberField = new JTextPane();
		numberField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyTyped(KeyEvent e) {
				double sum = 0,avg = 0;
				switch(e.getKeyChar()) {
				case KeyEvent.VK_SPACE: //分隔符为空格
				case KeyEvent.VK_COMMA: //分隔符为英文逗号
				case KeyEvent.VK_ENTER: //分隔符为回车
					String str=numberField.getText();
					StringTokenizer analyze = new StringTokenizer(str," ,\n");
					int allnum=analyze.countTokens();
					for(int i =0;i<allnum;i++) {
						String temp = analyze.nextToken();  //字符串分割解析工具
						sum = sum+Double.parseDouble(temp);
					}
					if(allnum>0) {
						avg = sum/allnum;
					}else {
						avg = 0;
					}
					sumField.setText(Double.toString(sum));
					aveField.setText(Double.toString(avg));
				}
			}
		});
		numberField.setBounds(14, 13, 349, 101);
		contentPane.add(numberField);
	
		JLabel label = new JLabel("和 值");
		label.setBounds(57, 140, 72, 18);
		contentPane.add(label);
		
		JLabel label_1 = new JLabel("平均值");
		label_1.setBounds(57, 182, 72, 18);
		contentPane.add(label_1);
		
		sumField = new JTextField();
		sumField.setBounds(130, 137, 233, 24);
		contentPane.add(sumField);
		sumField.setColumns(10);
		
		aveField = new JTextField();
		aveField.setBounds(130, 179, 233, 24);
		contentPane.add(aveField);
		aveField.setColumns(10);
	}
}


运行结果:

相关推荐

发表评论

路人甲
看不清楚?点图切换

网友评论(0)