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

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);
	}
}

运行结果:

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾年之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值