桂电JAVA程序设计与问题求解实验说明书(含实验代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA程序设计实验
实验一 JAVA开发环境及基本语法
学院:计算机科学与工程学院
专业:信息安全
学号: **********
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验二系统类和数组
学院:计算机科学与工程学院
专业:信息安全
学号: **********
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验三图形界面程序的界面设计
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验四图形界面程序的事件处理
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验五异常
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验六多线程
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验七流与文件
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
JAVA程序设计实验
实验八网络
学院:计算机科学与工程学院
专业:信息安全
学号: 1100360100
姓名:路边葱子
2014年6月
实验一 Java开发环境及基本语法
一、实验目的
1、掌握常用的Java集成开发环境的使用,特别是Eclipse和NetBeans。

2、掌握Java基本语法,重点是面向对象的思想和语法。

3、掌握控制台下(应用程序)的输入输出方法,作为后续部分实验的基础。

二、实验类型
设计型。

三、实验内容
1、打开实验室计算机上的集成开发环境Eclipse或NetBeans(重点是Eclipse),掌握其基本使用方法。

了解开发软件的各个菜单功能。

会创建java项目(Project),会编辑和编译、运行项目代码。

2、验证和学习所给的几个例子程序及其讲解。

然后自己编写一个至少由一个类构成的Java程序,其功能是在运行后,能接收用户输入一个学生的姓名以及java课的成绩(百分制),并输出对该学生成绩是否达到60分的及格分的判断(可使用if语句)。

例如,输入学生姓名李明,然后输入成绩50,则输出“李明的成绩为不及格”。

3、编写一个程序来表示长方体的长宽高等数据并有计算体积的函数可供调用,长方体类从矩形类继承而来。

程序运行时能接受输入任意的 3 个数作为长方体的长、宽和高,然后能够输出所输入的长宽高及所计算出的体积。

注意不能把代码全部写在main函数里面,不能直接输出长宽高的乘积。

在解决该问题的程序设计中,将体积计算等功能封装成方法调用,长宽高等属性封装到矩形类和长方体类中,尽量多地用到接口的定义、类的定义、成员变量的定义、成员函数的定义、类的继承等面向对象的语法和知识点。

在此基础上熟悉、理解和解释类的封装、继承等面向对象编程思想和概念。

四、详细设计与测试
//实验1.1 测试成绩合格与否
import java.util.Scanner;
public class chengji {
public static void main(String[]args)
{
float score;
String name;
Scanner userInput=new Scanner(System.in);
System.out.print("请输入姓名:");
name=userInput.nextLine();
System.out.print("请输入成绩:");
score=userInput.nextFloat();
if((score<0)||(score>100))
{
System.out.println("input error!\n");
}
else if((score<60)&&(score>=0))
{
System.out.println(name+" 的成绩不及格!");
}
else
{
System.out.println(name+" 的成绩及格!");
}
}
}
测试输入不合格时:
测试数据合格时:
//实验1.2 计算矩形体积
import java.util.Scanner;
class retangle
{
double width;
double Long;
retangle(double w,double l)
{
this.width=w;
this.Long=l;
}
}
class Cuboid extends retangle
{
double height;
Cuboid(double l,double w,double h)
{
super(w,l);
this.height=h;
}
public double getVolume()
{
return height*this.Long*this.width;
}
}
class sy1
{
public static void main(String []args)
{
double width;
double Long;
double height;
Scanner userInput=new Scanner(System.in);
System.out.print("请输入长宽高:");
width=userInput.nextDouble();
Long=userInput.nextDouble();
height=userInput.nextDouble();
if((width>0)&&(Long>0) &&(height>0) )
{
Cuboid cuboid1=new Cuboid(Long,width,height);
System.out.println("该长方体的体积为:"+cuboid1.getVolume());
}
else
{
System.out.println("您的输入有误!");
}
}
}
错误数据输入情况:
正确输入情况:
实验二系统类和数组
一、实验目的
1、通过字符串处理类的应用,掌握系统类的使用方法。

2、掌握数组的定义和使用。

3、进一步掌握Java程序设计的基本过程和基本方法。

二、实验类型
设计型
三、实验内容
1、应用数组和字符串,编写一个用于统计学生成绩的程序,运行之后,首先能接受用户输入不超过10个学生的姓名和Java课的分数。

输入结束之后,能输出这批学生的Java课最高分者和最低分者的姓名和分数。

还能接受用户输入学生姓名来查询某学生的成绩,当姓名不存在时,向用户提示不存在该学生。

2、通过应用Java中常用的数组和字符串,编写一个简单的通讯录程序,来熟悉系统类和数组的应用。

通讯录由多条记录构成。

每条记录包括一个联系人的姓名、性别、电话、通信地址,并具有显示、查询、增加、修改、删除等功能,且每执行一次功能操作后,可以选择用类似以下的格式,输出通讯录的所有信息记录:
编号姓名性别电话通信地址
01 张三男123456 上海
02 李四女456789 桂林
可考虑用数组分别存储姓名,性别,电话,通信地址,那么显示、查询,增加、修改、删除操作就可转换为对数组元素的操作。

通讯录中的所有记录的每一个字段可以采用一维或二维或其它类型数组来存放。

请发挥自己的思考能力,用自己熟悉的或者觉得更合理的方式来设
计程序解决问题,完成该实验。

五、详细设计与测试
//实验2.1 查询所有成绩的高低分
import java.util.Scanner;
public class Grade {
public static void Menu(){
System.out.println("====菜单=====");
System.out.println("-1- 录入成绩");
System.out.println("-2- 显示最高低分");
System.out.println("-3- 按姓名查询");
System.out.println("-4- 显示所有");
System.out.println("===========");
System.out.println("请选择....");
}
public static void main(String[] args) { Person stu[];
stu = new Person[10];
for(int j=0;j<10;j++)
stu[j] = new Person();
Scanner sc = new Scanner(System.in);
int i,j=0;
while(true)
{
Menu();
i = sc.nextInt();
switch(i)
{
case 1:
stu[j].Get();
j++;
break;
case 2:
stu[0].Max_Min(stu);
break;
case 3:
Person.Search(stu);
break;
case 4:
stu[0].Show(stu, j);
break;
default:
System.out.println("无效操作...");
break;
}
}
}
}
显示所有输入:
查询高低分:
//2.2 通讯录
import java.util.Scanner;
class address_list
{
int count=0;
long [] teleNum=new long[100];
String [] name=new String[100];
String [] sex=new String[100];
int [] num=new int[100];
String [] address=new String[100];
//打印函数
public void print()
{
System.out.println("编号姓名性别电话通信地址");
for(int i=0;i<count;i++)
{
System.out.println(num[i]+" "+name[i]+" "+sex[i]+"
"+teleNum[i]+" "+address[i]);
}
}
//搜寻函数
public void search()
{
System.out.println("请选择查找方式:1.姓名 2. 编号\n请选择(1或者2)");
Scanner userInput=new Scanner(System.in);
switch(userInput.nextInt())
{
case 1:
{
String inputNamer;
inputNamer=userInput.next();
for(int i=0;i<count;i++)
{
if(name[i].equals(inputNamer));
System.out.println("编号姓名性别电话通信地址");
System.out.println(num[i]+" "+name[i]+"
"+sex[i]+" "+teleNum[i]+" "+address[i]);
}
break;
}
case 2:
{
int userInputNum;
System.out.println("请输入要查找的编号:");
userInputNum=userInput.nextInt();
if((userInputNum>0)&&(userInputNum<=count))
{
System.out.println("编号姓名性别电话通信地址");
System.out.println(num[userInputNum-1]+"
"+name[userInputNum-1]+" "+sex[userInputNum-1]+"
"+teleNum[userInputNum-1]+" "+address[userInputNum-1]);
}
else
{System.out.println("输入有误!");}
break;
}
}
}
//增加通讯录人员
public void add()
{
if(count<100)
{
System.out.println("请输入要加入通讯录人员的编号姓名性别电话号码通信地址");
Scanner userInput=new Scanner(System.in);
name[count]=userInput.next();
sex[count]=userInput.next();
teleNum[count]=userInput.nextLong();
address[count]=userInput.next();
count++;
num[count-1]=count;
}
else
{
System.out.println("通讯录已满!");
}
}
//删除
public void delete()
{
int deleNum;
print();
System.out.println("请输入要删除的编号:");
Scanner userInput=new Scanner(System.in);
deleNum=userInput.nextInt();
if((deleNum>0)&&(deleNum<=count))
{
if(deleNum!=100)
{
for(int i=deleNum-1;i<count;i++)
{
teleNum[i]=teleNum[i+1];
name[i]=name[i+1];
sex[i]=sex[i+1];
address[i]=address[i+1];
count--;
}
}
else
{
count--;
}
}
else
{
System.out.println("要删除的编号不存在!");
}
}
//修改
public void modify()
{
System.out.println("请输入要修改的人员的编号:");
Scanner userInput=new Scanner(System.in);
int userInputNum;
userInputNum=userInput.nextInt();
if((userInputNum>0)&&(userInputNum<=count))
{
System.out.println("请输入要修改的通讯录人员的姓名¡¤性别¡¤电话号码¡¤通信地址");
name[userInputNum-1]=userInput.next();
sex[userInputNum-1]=userInput.next();
teleNum[userInputNum-1]=userInput.nextLong();
address[userInputNum-1]=userInput.next();
}
else
{
System.out.println("输入的编号有误!");
}
}
}
class addressList{
public static void main(String []args)
{
address_list address_list1=new address_list();
int userChoice;
Scanner userInput =new Scanner(System.in);
do
{
System.out.println("\n请选择:\n1.新增 2.修改 3.删除 4.查询
5.退出");
userChoice=userInput.nextInt();
switch(userChoice)
{
case 1:
address_list1.add();
address_list1.print();
break;
case 2:
address_list1.modify();
address_list1.print();
break;
case 3:
address_list1.delete();
address_list1.print();
break;
case 4:
address_list1.search();
address_list1.print();
break;
default:
break;
}
}while(userChoice!=5);
}
}
实验三图形界面程序的界面设计
一、实验目的
1、掌握Java图形界面程序设计的基本思想和步骤。

2、掌握JDK中AWT包和Swing包的基本使用方法和区别。

3、掌握容器和布局的概念和使用。

4、掌握图形界面程序的界面设计方法和步骤。

二、实验类型
设计型
三、实验内容
1、自己编写所有代码,设计一个程序的界面。

该程序的功能要求是:运行之后,界面要求基本如左图所示。

其中界面设计时的顶层容器要求使用JFrame(或Frame),界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”这些提示标签使用组件JLabel (或Label),输入运算数和输出运算结果使用JTextField(或TextField),“相加”、“相减”和“全部清零”使用按钮JButton(或Button)。

请注意查阅JDK的API文档中这些相关的类,看看它们具有哪些构造函数可以用来生成所需的对象,它们具有哪些方法可以用来进行调用。

注意保存好本次实验代码,下一次实验将会要求实现其事件处理以继续完善。

六、下面的左图和右图分别是windows系统中的标准型和科学型计算器的界面截图。

打开你使用的微软公司Windows操作系统或Linux等其它操作系统中自带的“计算器”软件,观察和参照其界面和功能,实现一个接近其界面和功能的计算器(标准型或科学型)的界面。

并保存好代码,在下一次实验中实现其事件处理(即运算功能)。

四、详细设计与测试
//3.1简单计算器
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class add2
{
JFrame jf = new JFrame("简易计算器");
JButton button1 = new JButton("相加");
JButton button2 = new JButton("相减");
JButton button3 = new JButton("全部清零");
JLabel Label1 = new JLabel("简易计算器");
JLabel Label2 = new JLabel("运算数一");
JLabel Label3 = new JLabel("运算数二");
JLabel Label4 = new JLabel("运算结果");
JTextField textField1 = new JTextField();
JTextField textField2 = new JTextField();
JTextField textField3 = new JTextField();
public add2()
{
jf.setSize(250, 300);
jf.setLayout(null);
jf.getContentPane().setBackground(Color.green);
button1.setBounds(35, 185, 70, 25);
button2.setBounds(120, 185, 70, 25);
button3.setBounds(65, 225, 100, 25);
jf.add(button1);
jf.add(button2);
jf.add(button3);
Label1.setBounds(70, 20, 120, 30);
Label2.setBounds(45, 60, 70, 25);
Label3.setBounds(45, 100, 70, 25);
Label4.setBounds(45, 140, 70, 25);
Label1.setFont(new Font("宋体", 0, 20));
jf.add(Label1);
jf.add(Label2);
jf.add(Label3);
jf.add(Label4);
textField1.setBounds(110, 60, 70, 25);
textField2.setBounds(110, 100, 70, 25);
textField3.setBounds(110, 140, 70, 25);
jf.add(textField1);
jf.add(textField2);
jf.add(textField3);
jf.setResizable(true);
jf.setVisible(true);
jf.setDefaultCloseOperation(3);
button1.addActionListener(new jia());
button2.addActionListener(new jian());
button3.addActionListener(new qk(textField1, textField2, textField3));
} //输入的数据
class sj{
String s1;
String s2;
double i1;
double i2;
double i3; } //加法
class jia extends sj implements ActionListener {
public void actionPerformed(ActionEvent e) {
s1=textField1.getText();
s2=textField2.getText();
if(s1.isEmpty()||s2.isEmpty())
JOptionPane.showMessageDialog(textField3,"请您补全数据!!!" );
else{
if((s1.codePointAt(0)>'9'||s2.codePointAt(0)<'0')||((s1.codePointAt(0)<'0'||s2.codePointAt (0)>'9')))
JOptionPane.showMessageDialog(textField3,"您的输入有误!!!" ,"警告",JOptionPane.W ARNING_MESSAGE);
else {
i1=Double.parseDouble(s1);
i2=Double.parseDouble(s2);
i3=i1+i2;
textField3.setText(String.valueOf(i3));
}
}
}
} //减法
class jian extends sj implements ActionListener {
public void actionPerformed(ActionEvent e) {
s1=textField1.getText();
s2=textField2.getText();
if(s1.isEmpty()||s2.isEmpty())
JOptionPane.showMessageDialog(textField3,"请您补全数据!!!" );
else{
if((s1.codePointAt(0)>'9'||s2.codePointAt(0)<'0')||((s1.codePointAt(0)<'0'||s2.codePointAt(0)> '9')) )
JOptionPane.showMessageDialog(textField3,"您的输入有误!!!" ,"警告",JOptionPane.W ARNING_MESSAGE);
else {
i1=Double.parseDouble(s1);
i2=Double.parseDouble(s2);
i3=i1-i2;
textField3.setText(String.valueOf(i3));
}
}
}
}
//清空
class qk implements ActionListener {
JTextField a = null;
JTextField b = null;
JTextField c = null;
public qk(JTextField textField1, JTextField textField2, JTextField textField3) {
a = textField1;
b = textField2;
c = textField3;
}
public void actionPerformed(ActionEvent e) {
a.setText("");
b.setText("");
c.setText("");
}
}
public static void main(String args[]) {
add2 jba = new add2();
}
}
实验四图形界面程序的事件处理
一、实验目的
1、掌握Java图形界面程序设计的基本思想和步骤。

2、掌握图形界面程序设计中键盘鼠标事件处理的机制。

3、了解常用的监听器接口及其方法和作用。

4、掌握图形界面程序设计中事件处理的方法和步骤。

二、实验类型
设计型
三、实验内容
1、在上一个实验(实验三)的第1题中,我们设计了一个简易计算器的界面。

但仅仅要求设计出其界面,而没有要求进行事件处理。

在本次实验中,请实现其事件处理。

使得程序
运行之后,当输入两个小数作为运算数后,点击“相加”或者“相减”按钮,两数相加或相减的结果就会显示在“运算结果”框中。

如果点击“全部清零”按钮,那么两个运算数输入框和运算结果框中就会完全被清空。

2、对于第1题,除了正常数据之外,用户还可能因为好奇或误操作导致这样几种情况:(1)1个或2个运算数均未输入;(2)输入的数据串中含有除小数点和数字之外的非法字符;(3)输入的数据串中不含有除小数点和数字之外的非法字符,但小数点的个数超过1个或小数点的位置在数据的开头或结尾处。

请改进你的程序,对这几种情况进行判断,不允许使用正则表达式或异常处理机制,完全使用字符串类的各种方法,对这几种输入情况得到的用户所输入的字符串进行分析判断,并在你的程序图形界面上向用户进行相应的提示。

3、在上一个实验(实验三)的第2题中,我们设计了一个仿Windows系统自带的计算器的界面。

但仅仅要求设计出其界面,而没有要求进行事件处理。

在本次实验中,请实现其事件处理。

使得程序运行之后,各项主要运算功能能良好运行。

请自己输入数据进行测试。

并尽量实现对非法数据的判断和处理。

七、详细设计与测试
//实验4.1 简单的计算器
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class add2
{
JFrame jf = new JFrame("简易计算器");
JButton button1 = new JButton("相加");
JButton button2 = new JButton("相减");
JButton button3 = new JButton("全部清零");
JLabel Label1 = new JLabel("简易计算器");
JLabel Label2 = new JLabel("运算数一");
JLabel Label3 = new JLabel("运算数二");
JLabel Label4 = new JLabel("运算结果");
JTextField textField1 = new JTextField();
JTextField textField2 = new JTextField();
JTextField textField3 = new JTextField();
public add2()
{
jf.setSize(250, 300);
jf.setLayout(null);
jf.getContentPane().setBackground(Color.green);
button1.setBounds(35, 185, 70, 25);
button2.setBounds(120, 185, 70, 25);
button3.setBounds(65, 225, 100, 25);
jf.add(button1);
jf.add(button2);
jf.add(button3);
Label1.setBounds(70, 20, 120, 30);
Label2.setBounds(45, 60, 70, 25);
Label3.setBounds(45, 100, 70, 25);
Label4.setBounds(45, 140, 70, 25);
Label1.setFont(new Font("宋体", 0, 20));
jf.add(Label1);
jf.add(Label2);
jf.add(Label3);
jf.add(Label4);
textField1.setBounds(110, 60, 70, 25);
textField2.setBounds(110, 100, 70, 25);
textField3.setBounds(110, 140, 70, 25);
jf.add(textField1);
jf.add(textField2);
jf.add(textField3);
jf.setResizable(true);
jf.setVisible(true);
jf.setDefaultCloseOperation(3);
button1.addActionListener(new jia());
button2.addActionListener(new jian());
button3.addActionListener(new qk(textField1, textField2, textField3));
} //输入的数据
class sj{
String s1;
String s2;
double i1;
double i2;
double i3; } //加法
class jia extends sj implements ActionListener {
public void actionPerformed(ActionEvent e) {
s1=textField1.getText();
s2=textField2.getText();
if(s1.isEmpty()||s2.isEmpty())
JOptionPane.showMessageDialog(textField3,"请您补全数据!!!" );
else{
if((s1.codePointAt(0)>'9'||s2.codePointAt(0)<'0')||((s1.codePointAt(0)<'0'||s2. codePointAt (0)>'9')))
JOptionPane.showMessageDialog(textField3,"您的输入有误!!!" ,"警告",JOptionPane.WARNING_MESSAGE);
else {
i1=Double.parseDouble(s1);
i2=Double.parseDouble(s2);
i3=i1+i2;
textField3.setText(String.valueOf(i3));
} } } } //减法
class jian extends sj implements ActionListener {
public void actionPerformed(ActionEvent e) {
s1=textField1.getText();
s2=textField2.getText();
if(s1.isEmpty()||s2.isEmpty())
JOptionPane.showMessageDialog(textField3,"请您补全数据!!!" );
else{
if((s1.codePointAt(0)>'9'||s2.codePointAt(0)<'0')||((s1.codePointAt(0)<'0'|
|s2.codePointAt(0)>'9')) )
JOptionPane.showMessageDialog(textField3,"您的输入有误!!!" ,"警告",JOptionPane.WARNING_MESSAGE);
else {
i1=Double.parseDouble(s1);
i2=Double.parseDouble(s2);
i3=i1-i2;
textField3.setText(String.valueOf(i3));
} } } }
//清空
class qk implements ActionListener {
JTextField a = null;
JTextField b = null;
JTextField c = null;
public qk(JTextField textField1, JTextField textField2, JTextField textField3) {
a = textField1;
b = textField2;
c = textField3;
}
public void actionPerformed(ActionEvent e) {
a.setText("");
b.setText("");
c.setText("");
}
}
public static void main(String args[]) {
add2 jba = new add2();
} }
加法减法
//实验4.2 多功能的计算器
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import bel;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Calculator extends WindowAdapter implements ActionListener {
JFrame frame;
JTextField show;
JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh,
zf;
// 按钮退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号
JButton b[] = new JButton[10]; // 按钮数组,数字键0~9
double sum = 0, getValue;
int i = 0, j = 0, p = 0, l, action;
JDialog about;
final int slength = 30; // 设置结果显示有效长度
public void disp() {
frame = new JFrame();
frame.setTitle("xx的个人计算器");
frame.setSize(360, 230);
frame.setLocation(380, 260);
frame.setBackground(Color.LIGHT_GRAY);
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.setResizable(false);
//计算器disTop模块,包括数字显示文本框、back,ce,c,about按钮show = new JTextField(31);
show.setText("0");
show.setHorizontalAlignment(SwingConstants.RIGHT);
show.setEditable(false);
frame.add(show);
Panel dispTop = new Panel();
frame.add(dispTop);
dispTop.setLayout(new GridLayout(1, 4, 3, 3));
bc = new JButton(" 退格");
bc.setForeground(Color.BLUE);
dispTop.add(bc);
ce = new JButton(" 复位");
ce.setForeground(Color.BLUE);
dispTop.add(ce);
c = new JButton(" 清空");
c.setForeground(Color.BLUE);
dispTop.add(c);
//广告按钮,显示计算器制作者
ab = new JButton(" 关于");
ab.setForeground(Color.BLUE);
dispTop.add(ab);
about = new JDialog(frame, "关于计算器", true);
Label ct = new Label("本计算器由xx 制作", 1);
ct.setForeground(Color.RED);
about.add(ct, "Center");
about.setSize(200, 100);
about.setLocation(500, 300);
//主要按钮显示面板包括disLeft和disRight
Panel dispMain = new Panel();
frame.add(dispMain);
dispMain.setLayout(new GridLayout(1, 2, 10, 10));
//disLeft面板,包括0-9、+/-、。

这十二个按钮
Panel dispLeft = new Panel();
dispMain.add(dispLeft);
dispLeft.setLayout(new GridLayout(4, 3, 3, 3));
Panel dispRight = new Panel();
//disRight面板,包括+、-、*、/、sqrt、%、1/x、=这个人几个按钮dispMain.add(dispRight);
dispRight.setLayout(new GridLayout(4, 2, 3, 3));
//新建0-9这是个按钮,并将其添加到disLeft中
for (l = 9; l >= 0; l--) {
b[l] = new JButton(String.valueOf(l));
dispLeft.add(b[l]);
b[l].addActionListener(this); }
//新建其余按钮,并分别将其添加到各自的面板中
jia = new JButton("+");
jia.setForeground(Color.RED);
jian = new JButton("-");
jian.setForeground(Color.RED);
cheng = new JButton("*");
cheng.setForeground(Color.RED);
chu = new JButton("/");
chu.setForeground(Color.RED);
equ = new JButton("=");
equ.setForeground(Color.RED);
point = new JButton(".");
zf = new JButton(" +/- ");
sqrt = new JButton("sqrt");
bfh = new JButton("%");
ds = new JButton("1/x");
dispRight.add(chu);
dispRight.add(sqrt);
dispRight.add(cheng);
dispRight.add(bfh);
dispRight.add(jian);
dispRight.add(ds);
dispRight.add(jia);
dispRight.add(equ);
dispLeft.add(zf);
dispLeft.add(point);
//为各个按钮绑定监听器
about.addWindowListener(this);
bc.addActionListener(this);
ce.addActionListener(this);
c.addActionListener(this);
ab.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
equ.addActionListener(this);
point.addActionListener(this);
zf.addActionListener(this);
sqrt.addActionListener(this);
bfh.addActionListener(this);
ds.addActionListener(this);
frame.addWindowListener(this);
frame.setVisible(true); }
public void actionPerformed(ActionEvent e) {
getValue = Double.valueOf(show.getText()).doubleValue();
if (e.getSource() == jia) { // 加运算,可连加
if (j == 0) {
sum = getValue;
} else if (action == 1) {
sum += getValue; }
setSum();
j++;
p = 0;
i = 0;
action = 1;
} else if (e.getSource() == jian) { // 减运算,可连减if (j == 0) {
sum = getValue;
} else if (action == 2) {
sum -= getValue; }
setSum();
j++;
p = 0;
i = 0;
action = 2;
} else if (e.getSource() == cheng) { // 乘运算,可连乘if (j == 0) {
sum = getValue;
} else if (action == 3) {
sum *= getValue; }
setSum();
j++;
p = 0;
i = 0;
action = 3;
} else if (e.getSource() == chu) { // 除运算,可连除
if (j == 0)
sum = getValue;
else if (action == 4) {
sum /= getValue;
}
setSum();
j++;
p = 0;
i = 0;
action = 4;
} else if (e.getSource() == equ) { // 等号,运算最后一个操作数switch (action) {
case 1:
show.setText(String.valueOf(sum += getValue)); break;
case 2:
show.setText(String.valueOf(sum -= getValue)); break;
case 3:
show.setText(String.valueOf(sum *= getValue)); break;
case 4:
show.setText(String.valueOf(sum /= getValue)); break;
}
setSum();
i = 0;
j = 0;
action = 0;
} else if (e.getSource() == point) { // 小数点,只能按一个小数点if (p == 0)
show.setText(show.getText() + e.getActionCommand());
p = 1;
} else if (e.getSource() == c || e.getSource() == ce) { // 清空与复位
i = 0;
j = 0;
p = 0;
sum = 0;
action = 0;
show.setText("0");
} else if (e.getSource() == bc) { // 退格
String s = show.getText();
if (s.length() > 1) {
show.setText("");
for (l = 0; l < s.length() - 1; l++) { // 按一下,删除尾部一位char a = s.charAt(l);
show.setText(show.getText() + a);
}
} else
show.setText("0");
} else if (e.getSource() == ab) { // 关于
about.setVisible(true);
} else if (e.getSource() == sqrt) { // 开2次方根
sum = Math.sqrt(getValue);
setSum();
i = 0;
} else if (e.getSource() == ds) { // 求倒数
sum = 1 / getValue;
setSum();
i = 0;
} else if (e.getSource() == bfh) { // 百分号
sum = getValue / 100;
setSum();
i = 0;
} else if (e.getSource() == zf) { // 正负号切换,正号不显示
String s = show.getText();
char a = s.charAt(0);
if (a == '-') {
show.setText("");
for (l = 1; l < s.length(); l++) { // 去掉负号
show.setText(show.getText() + s.charAt(l));
} }
else if (getValue != 0) { // 加上负号
show.setText("-" + s); } }
for (l = 0; l < 10; l++) { // 0~9数字键触发
if (e.getSource() == b[l]) {
if (i == 0)
show.setText("");
String s = show.getText();
if (s.length() < slength)
show.setText(show.getText() + e.getActionCommand());
if (e.getSource() == b[0] && getValue == 0 && p == 0)
show.setText("0");
if (e.getSource() != b[0] && getValue == 0 && p == 0)
show.setText(e.getActionCommand());
i++;// i用来标记数字键触发的状态
} } }
public void setSum() { // 把计算结果显示出来
show.setText(String.valueOf(sum));
String s = show.getText();
char a = s.charAt((s.length() - 1));
char b = s.charAt((s.length() - 2));
if (a == '0' && b == '.') { // 如果是整数,则去掉后面的小数点和0
show.setText(String.valueOf(Math.round(sum)));
} }
public void windowClosing(WindowEvent e) {
if (e.getSource() == about)
about.setVisible(false);
else if (e.getSource() == frame)
System.exit(0);
} public static void main(String args[]) {
new Calculator().disp();
}}
实验五异常
一、实验目的
1、掌握异常的概念、作用、分类和进行异常处理的语法结构。

2、了解系统异常类的体系和系统定义的常见标准异常。

3、掌握用户自定义异常类的定义和抛出异常的方法。

4、通过掌握异常来分析调试程序的编译错误和编写更健壮的程序。

二、实验类型
设计型
三、实验内容
1、标准异常:设计一个程序,使得其运行时,可以接受用户输入若干个整数并依次存入数组中,不限定输入数的个数,使得在输入数的个数超过数组的实际大小时产生数组下标越界异常(ArrayIndexOutOfBoundsException)。

程序代码中“不需要”对异常进行捕获处理,
观察异常产生时程序运行是否被中断,编译器产生了怎样的提示。

2、自定义异常:设计一个新的程序或者完善题目1的程序,使得其运行时,可以接受用户输入若干个数并依次存入数组中。

要求用户输入的整数必须大于0小于100。

如果不符合这个范围则抛出异常。

请自定义一个异常类来表示这种情况,并在用户的输入不符合要求时抛出该异常。

八、详细设计与测试
//标准异常:
import java.io.*;
public class test{
public static void main(String args[]) {
System.out.println("Please Input five Interger\n 测试输入是否为整型数:");
for(int i=0;i<5;i++){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int a=Integer.parseInt(in.readLine());
System.out.println("the Integer you input is:"+a);
}
catch(IOException e){
System.out.println("I/O error");
}
catch(NumberFormatException ne){
System.out.println("what you input is not an Integer!");
}
}
System.out.println("测试完毕!");
}
}
//实验5.2自定义异常
import java.util.Scanner;
class MyException extends Exception {
private static final long serialVersionUID= 3461899582505930473L;
MyException() {
System.out.println("It is Error !");
}
}
class UsMyException {
void Ff(int m) throws MyException {
if (m > 100 || m < 0) { // 判断输入内容是否在0~100之间
MyException a = new MyException();
throw a;
}
}
}
class sy5 {
public static void main(String[] args) {
int s[] = new int[5];
UsMyException b = new UsMyException();
System.out.println("请输入五个输入值在0~100之间其整数:");
for (int i = 0; i < 10; i++) { // i不小于5就行了
Scanner sc = new Scanner(System.in);
s[i] = sc.nextInt();
try {
b.Ff(s[i]);
} catch (MyException e) {
System.out.println("产生异常名称为:" + e.toString());
}
}
}
}
实验六多线程
一、实验目的
1、掌握线程和多线程的概念。

2、掌握创建线程的两种方法及其区别。

3、了解线程的启动、终止、同步、互斥和优先级等概念。

二、实验类型
设计型
三、实验内容
1、编写一个程序,其功能是运行之后,其中有一个线程可以输出20次你的学号,另一个线程会输出20次你的姓名。

2、编写一个图形界面程序,运行之后,让其中有一个线程能在界面上“实时”显示系统当前时间(精确到秒获取时间可查询java.util.Calendar类,它包含了多个用于获得系统时间的函数)。

另让一个线程可以在界面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是8:00到9:00,则提示用户该上课;现在是23:00到8:00,则提示用户该休息。

具体测试时可以将时间段限制到秒级,以便及时查看到程序运行中提示信息的变化)。

四、详细设计与测试
//自定义线程类
class thream implements Runnable {
public thream() {
}
public void run() {
for (int i = 1; i <= 20; i++) {
System.out.println("第" + i + "次执行线程"
+ Thread.currentThread().getName());
try {
Thread.currentThread().sleep(200);
} catch (InterruptedException e) {
}
}
}
public static void main(String args[]) {
Thread t1 = new Thread(new thream(), "1100360100");
Thread t2 = new Thread(new thream(), "110036");
t1.start();
t2.start();
}
}
//定时器类线程
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;。

相关文档
最新文档