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

运行结果:

编写一个Java应用程序,用于接收用户从键盘输入的1-99999之间的整。 首先,我们需要用Scanner类来接收用户输入的整。在这个程序中,我们可以使用nextInt()方法,该方法从控制台读取用户输入,并将其转换为整。 接下来,我们将使用if语句来验证输入是否在1-99999范围内。如果输入不在该范围内,我们将向用户提示错误并要求重新输入。 在输入验证后,我们将使用各种算术运算来处理整并输出结果。例如,我们可以使用模运算计算的个位数字,使用整除法计算的万位数字等等。 最后,我们将输出计算结果,例如输出每个数字的值,它们的总和、平均值等等。 下面是一个参考程序: import java.util.Scanner; public class InputValidationProgram { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入1-99999之间的整:"); int num = sc.nextInt(); if(num<1 || num>99999) { System.out.println("输入的整必须在1-99999之间,请重新输入。"); num = sc.nextInt(); } int digits = String.valueOf(num).length(); int sum = 0; System.out.println("您输入的整是:" + num); System.out.println("它共有" + digits + "位数字。"); for(int i=0; i<digits; i++) { int digit = num % 10; sum += digit; num /= 10; System.out.println("它的第" + (i+1) + "位数字是:" + digit); } System.out.println("它的所有数字相加的和是:" + sum); System.out.println("它的平均值是:" + sum/digits); sc.close(); } } 这个程序可以接收用户输入1-99999之间的整,并验证它是否有效。如果输入无效,程序将提示错误并要求用户重新输入。如果输入有效,程序将计算的每个数字,并输出数字的所有值。最后,程序将输出数字的总和和平均值。 这只是一个简单的例子,但是可以轻松扩展程序来处理更复杂的逻辑和计算
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拾年之璐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值