Java实验五
Java实验五组件与事件处理
【目的】
①学习处理ActionEvent事件;
②学习处理ItemEvent事件和paint方法;
③学习使用布局类。
【内容】
1.算术测试。
?实验要求:
编写一个算书测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是
否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以
通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给
出题目的答案;MainClass是软件的主类。
?程序:
Teacher.java
public class Teacher
{
int numberOne, numberTwo;
String operator = "";
boolean right;
public int giveNumberOne(int n)
{
numberOne = (int)(Math.random() * n) + 1;
return numberOne;
}
public int giveNumberTwo(int n)
{
numberTwo = (int)(Math.random() * n) + 1;
return numberTwo;
}
public String giveOperator()
{
double d = Math.random();
if (d >= 0.5)
operator = "+";
else
operator = "-";
return operator;
}
public boolean getRight(int answer)
{
if (operator.equals("+"))
{
if (answer == numberOne + numberTwo)
right = true;
else
right = false;
}
else if (operator.equals("-"))
{
if (answer == numberOne - numberTwo)
right = true;
else
right = false;
}
return right;
}
}
ComputerFrame.java
import java.awt.*;
import java.awt.event.*;
public class ComputerFrame extends Frame implements ActionListener {
TextField textOne, textTwo, textResult;
Button getProblem, giveAnwser;
Label operatorLabel, message;
Teacher teacher;
ComputerFrame(String s)
{
super(s);
teacher = new Teacher();
setLayout(new FlowLayout());
textOne = new TextField(10); //创建textOne,其可见字符长是
textTwo = new TextField(10); //创建textTwo,其可见字符长是
textResult = new TextField(10); //创建textResult,其可见字符长是
operatorLabel = new Label("+");
message = new Label("你还没有回答呢");
getProblem = new Button("获取题目");
giveAnwser = new Button("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(new Label("="));
add(textResult);
add(giveAnwser);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器
giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器
textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器
setBounds(100, 100, 450, 100);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == getProblem) //判断事件源是否是getProblem
{
int number1 = teacher.giveNumberOne(100);
int number2 = teacher.giveNumberTwo(100);
String operator = teacher.giveOperator();
textOne.setText("" + number1);
textTwo.setText("" + number2);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
if (e.getSource() == giveAnwser) //判断事件源是否是giveAnwser
{
String answer = textResult.getText();
try
{
int result = Integer.parseInt(answer);
if (teacher.getRight(result) == true)
{
message.setText("你回答正确");
}
else
{
message.setText("你回答错误");
}
}
catch (NumberFormatException ex)
{
message.setText("请输入数字字符");
}
}
textResult.requestFocus();
validate();
}
}
MainClass.java
public class MainClass
{
public static void main(String args[])
{
ComputerFrame frame;
frame = new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试
}
}
?实验后的练习:
1. 给上述程序增加测试乘、除的功能。
2.信号灯。
?实验要求:
编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表,该下拉列表有“”、“”和“”三个选项。在窗口的中心添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。
?程序:
SignalCanvas.java
import java.awt.*;
public class SignalCanvas extends Canvas
{ int red,green,yellow,x,y,r;
SignalCanvas()
{ setBackground(Color.white);
}
public void setRed(int r)
{ red=r;
}
public void setGreen(int g)
{ green=g;
}
public void setYellow(int y)
{ yellow=y;
}
public void setPosition(int x,int y)
{ this.x=x;
this.y=y;
}
public void setRadius(int r)
{ this.r=r;
}
public void paint(Graphics g)
{ if(red==1)
{ g.setColor(Color.red);
}
else if(green==1)
{ g.setColor(Color.green);
}
else if(yellow==1)
{ g.setColor(Color.yellow);
}
g.fillOval(x,y,2*r,2*r);
}
}
SignalFrame.java
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class SignalFrame extends Frame implements ItemListener
{ Choice choice;
SignalCanvas signal=null;
String itemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";
public SignalFrame()
{ choice=new Choice(); //创建choice
choice.add(itemRed); //创建choice添加itemRed
choice.add(itemYellow); //创建choice添加itemYellow choice.add(itemGreen); //创建choice添加itemGreen
choice.addItemListener(this); //将当前窗口注册为choice的ItemEvent事件监视器
add(choice,BorderLayout.NORTH);
try{ Class cs=Class.forName("SignalCanvas");
signal=(SignalCanvas)cs.newInstance();
add(signal,BorderLayout.CENTER);
}
catch(Exception e)
{ add(new Label("您还没有编写SignalCanvas类
"),BorderLayout.CENTER);
}
setBounds(100,100,360,300);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void itemStateChanged(ItemEvent e)
{ String item= choice.getSelectedItem(); // choice返回被选中的条目int w=signal.getBounds().width;
int h=signal.getBounds().height;
int m=Math.min(w,h);
signal.setRadius(m/6);
if(item.equals(itemRed))
{ if(signal!=null)
{ signal.setRed(1);
signal.setYellow(0);
signal.setGreen(0);
signal.setPosition(w/3,0);
signal.repaint();
}
}
else if(item.equals(itemYellow))
{ if(signal!=null)
{ signal.setRed(0);
signal.setYellow(1);
signal.setGreen(0);
signal.setPosition(w/3,h/3);
signal.repaint();
}
}
else if(item.equals(itemGreen))
{ if(signal!=null)
{ signal.setRed(0);
signal.setYellow(0);
signal.setGreen(1);
signal.setPosition(w/3,2*h/3);
signal.repaint();
}
}
}
}
SignalMainClass.java
public class SignalMainClass
{ public static void main(String args[])
{ SignalFrame frame;
frame=new SignalFrame() ;
frame.setTitle("信号灯");
}
}
?实验后的练习:
1. 改进上述程序,在下拉列表中增加“熄灭所有灯”选项,当选中
该项时,画布上绘制一个半径为0,位置是(0,0)的圆。
3.布局与日历。
?实验要求:
编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenter的布局是7行7列的
GriderLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北
面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两
个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当
前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一
月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout
布局,pSouth中放置一个标签用来显示一些信息。
?程序:
CalendarBean.java
import java.util.Calendar;
public class CalendarBean
{
String day[];
int year=2005,month=0;
public void setYear(int year)
{ this.year=year;
}
public int getYear()
{ return year;
}
public void setMonth(int month)
{ this.month=month;
}
public int getMonth()
{ return month;
}
public String[] getCalendar()
{ String a[]=new String[42];
Calendar 日历=Calendar.getInstance();
日历.set(year,month-1,1);
int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;
int day=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||
month==12)
{ day=31;
}
if(month==4||month==6||month==9||month==11)
{ day=30;
}
if(month==2)
{ if(((year%4==0)&&(year%100!=0))||(year%400==0))
{ day=29;
}
else
{ day=28;
}
}
for(int i=星期几,n=1;i<星期几+day;i++)
{
a[i]=String.valueOf(n) ;
n++;
}
return a;
}
}
CalendarFrame.java
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class CalendarFrame extends Frame implements ActionListener
{ Label labelDay[]=new Label[42];
Button titleName[]=new Button[7];
String name[]={"日","一","二","三", "四","五","六"};
Button nextMonth,previousMonth;
int year=2006,month=10;
CalendarBean calendar;
Label showMessage=new Label("",Label.CENTER);
public CalendarFrame()
{ Panel pCenter=new Panel();
pCenter.setLayout(new GridLayout(7,7)); //将pCenter的布局设置为行列的GridLayout 布局。
for(int i=0;i<7;i++)
{ titleName[i]=new Button(name[i]);
pCenter.add(titleName[i]);//pCenter添加组件titleName[i]。
}
for(int i=0;i<42;i++)
{
labelDay[i]=new Label("",Label.CENTER);
pCenter.add(labelDay[i]);//pCenter添加组件labelDay[i]。
}
calendar=new CalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
nextMonth=new Button("下月");
previousMonth=new Button("上月");
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
Panel pNorth=new Panel(),
pSouth=new Panel();
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(showMessage);
showMessage.setText("日历:"+calendar.getYear()+"年"+
calendar.getMonth()+"月" );
ScrollPane scrollPane=new ScrollPane();
//scrollPane.add(pCenter);
this.add("Center", pCenter);// 窗口添加scrollPane在中心区域
this.add("North", pNorth);// 窗口添加pNorth 在北面区域
this.add("South", pSouth);// 窗口添加pSouth 在南区域。
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==nextMonth)
{ month=month+1;
if(month>12)
month=1;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}
else if(e.getSource()==previousMonth)
{ month=month-1;
if(month<1)
month=12;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}
showMessage.setText("日历:"+calendar.getYear()+"年
"+calendar.getMonth()+"月" );
}
}
CalendarMainClass.java
public class CalendarMainClass
{ public static void main(String args[])
{ CalendarFrame frame=new CalendarFrame();
frame.setBounds(100,100,360,300);
frame.setVisible(true);
frame.validate();
frame.addWindowListener(new java.awt.event.WindowAdapter()
{ public void windowClosing(java.awt.event.WindowEvent e)
{ System.exit(0);
}
}
);
}
}
实验后的练习:
1. 请在CalendarFrame类中增加一个TextField文本框,用户可以通
过在文本框中输入年份来修改calendar对象的int成员year。
【结果】
将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。
【注意事项】
①实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名
称、班级、姓名、同组人,试验日期、交报告日期等。
②报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。【思考题】
学号-姓名-Java语言实验报告四
《Java语言与面向对象程序设计基础》课程 实验报告四 姓名:xxx 学号:20097110080xxx 实验题1 [实验要求] ?掌握Java IO流处理 ?掌握文件操作 ?掌握多线程程序设计 [实验程序] import java.io.*; public class Test4_1 { public static void main(String[] args) { try { File myDir=new File("C:/Test"); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(" 'C:/Test' is not a directory"); return; } File f=new File(myDir,"a.txt"); f.createNewFile(); FileWriter out = new FileWriter(f); for (int i=0;i<26;i++){ out.write((char)('A'+i)); } out.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果]
[实验结论与收获]
掌握文件及文件夹的创建及文件的写入。 实验题2 [实验要求] 将实验1题中新建的"a.txt"文件内容复制到"C:\Test\Ex"目录中"b.txt"文件中。[实验程序] import java.io.*; public class Test4_2 { public static void main(String[] args) { try { File myDir=new File("C:/Test/Ex"); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(myDir+ " is not a directory"); return; } File myFile =new File(myDir,"b.txt"); myFile.createNewFile(); FileReader in= new FileReader("C:/Test/a.txt"); BufferedReader bufIn = new BufferedReader(in); FileWriter out= new FileWriter (myFile); BufferedWriter bufOut= new BufferedWriter(out); String line; line = bufIn.readLine(); //System.out.println(line); while ( line!= null ) { System.out.println(line); bufOut.write(line,0,line.length()); bufOut.newLine(); line = bufIn.readLine(); } bufIn.close(); bufOut.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果]
java实验二附答案
Java 实验二 实验二类与对象 实验目的 1、掌握面向对象程序设计的方法与Java 作为面向对象程序设计语言的特点; 2、掌握修饰符与构造方法的使用规则; 3、掌握接口的特点、结构、调用与继承; 4、掌握如何创建包, 通过包如何管理类; 5、掌握Java 的继承机制与实现多态的方法实验内容 (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord赋值学号、姓名与成绩,GetRecord通过学号得到考生的成绩。通过实例验 证编程无误。 ⑵定义一个接口Area,其中包含一个计算面积的抽象方法calculateArea()然后设 计Circle与Rectan两个类实现这个接口的方法calculateArea()分别计算圆与矩形的面积。通过实例验证编程无误。 (3) 假定根据学生的3门学位课程的分数决定其就是否可以拿到学位,对于本科生, 如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (i)设计一个基类Student描述学生的共同特征。 (ii)设计一个描述本科生的类Undergraduate该类继承并扩展Student类。 (iii)设计一个描述研究生的类Graduate该类继承并扩展Student类。 (iv)设计一个测试类StudentDemo分别创建本科生与研究生这两个类的对象,并输 出相关信息 附实验一名称就是Java 语言基础实验报告分为以下几个部分 一实验名称二实验目的三实验仪器四实验步骤(把您的操作一步一步写清楚,java 程序代码要写) 五实验结果(程序运行后的结果就就是DOS 环境下运行出来的结果写在实验报告上) 六实验讨论(实验过程中的错误及如何改正,您的心得体会等) 答案: (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord 赋值学号、姓名与成绩,GetRecord 通过学号得到考生的成绩。通过实例 验证编程无误 public class Student { private int ID; private String name; private float score; public void SetRecord(int ID,String name,float score){ this、ID=ID; this、name=name; this、score=score; } public float getRecord(int ID){ if(ID==this 、ID) return this 、score; else return -1; }
java实验五
实验五:循环结构与数组 一、实验目的 1.掌握一维数组的概念、定义和使用 2.掌握数组与循环结构的联合使用 二、实验内容 1、随机产生20个0到100的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其下标和平均值。 【提示】 产生随机数的方法:double number=Math.random( );(number以属于[0,1)) 提示代码: public class ArrayEx1 { public static void main(String arge[]){ int maxi=0,sum=0,aver; int []number; number= new int[20]; for(int i=0;i<20;i++){ number[i]=(int)(101*Math.random()); System.out.print(number[i]+" "); //如何五个打一行! } System.out.println(); for(int i=0;i<20;i++) { sum=sum+number[i]; if(number[maxi] 实验5:Java类与对象 一、实验目的 (1)使用类来封装对象的属性和功能; (2)掌握Java类的定义。 (3)java对象的使用 二、实验任务 (1)按要求编写一个Java程序。 (2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。 三、实验内容 1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。 class Student{ long studentID; int classID; String name; String sex; int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; https://www.360docs.net/doc/dd1850032.html,=name; this.sex=sex; this.age=age; } public long getStudentID(){ return studentID; } public int getClassID(){ 《Java程序设计》课程实验指导书 实验一Java开发环境的安装与配置,熟悉Java程序 结构 一、实验目的: 1.掌握JDK的安装步骤。 2.理解环境变量PATH,CLASSPATH的作用,以及它们的设置方法。 3.熟悉Eclipse编辑环境,编写简单的Application程序,并编译和执行。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序和Applet程序(能输出一条简单的问候信息); 三、实验要求: 1.能正确地安装JDK 2.熟悉环境变量PATH,CLASSPATH设置方法,熟悉编辑环境 3.调试程序、编译,运行后得到正确的结果 4.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示, 并给出解决办法。 四、实验步骤: 1.从https://www.360docs.net/doc/dd1850032.html,上下载最新版本的JDK,并安装。 2.设置环境变量PATH,CLASSPATH,使得Java程序能正确编译和执行。 3.编写一个HelloWorld.java程序, (1)在主方法static public void main(String[]args)中调用System. out.println()方法,使程序输出一条问候信息; (2)编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序) 实验二Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.编写Java Appet程序打印“水仙花”数(它的个、十、百位数字的立 方的和等于该数本身,如:153=1^3+5^3+3^3) 3.编写Java Application程序,分别用do-while和for循环计算 1+1/2!+1/3!+1/4!...的前20项和 三、实验要求: 1.正确使用Java语言的选择语句,循环语句; 2.调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[]args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)编写Java Applet,在public void paint(Graphics g)方法中加入实现要求功能的代码,主要步骤是:从100到1000循环,判断每个 数是否符合水仙花数的特点,是则输出之。 3.编译运行程序,观察输出结果是否正确。 五、自做实验 1.输出100以内的所有素数。 信息工程学院1 Java程序设计实验/实习报告 学院: 班级:地信姓名: 学号:2 成绩:A 面向对象编程 一、实验/实习过程 (一)实验目的 掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。(二)实验过程 【实验题1】完成如下程序,完成思考题 [基本要求] 运行程序并观察运行结果。 [思考问题] 试述程序中主要语句的作用 运行结果: 主要程序语句的作用已标注为注释: class CCircle // 类的声明 { double pi; //申明成员变量 double radius; //申明成员变量 double getRadius() //创建方法 实验报告的内容与格式按任课教师的要求书写。 { return radius; //返回 radius } void setCircle(double r, double p) //创建方法 { pi=p; //初始化数据成员 radius=r; //初始化数据成员 } } public class Ex2_1 //类的声明 { public static void main(String args[]) //主方法 { CCircle cir1=new CCircle(); //创建对象 cir1.setCircle(2.0,3.1416); //调用对象 System.out.println("radius="+cir1.getRadius()); //输出结果 } } 【实验题2】设计一个用来描述汽车的类,使用类的静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。 package zz1; public class Car{ String name; int speed; int jiaodu; public Car(String name,int speed,int jiaodu){ https://www.360docs.net/doc/dd1850032.html,=name; this.speed=speed; this.jiaodu=jiaodu; System.out.println("车主:"+https://www.360docs.net/doc/dd1850032.html,); System.out.println("车速为:"+this.speed); 实验五J a v a事件处理实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。 分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体 和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按 确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设 置为指定的字体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设 置为指定的字体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指 定的窗体外观。 图1 程序界面运行效果 package Sy; import .*; import .*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;et(year, month - 1, 1); int星期几 = 日历.get - 1; int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; } 实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/dd1850032.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{ 华北电力大学 实验报告 实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期: 一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java public class Vehicle { 【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】//将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】//将参数p的值赋值给成员变量power } int getPower() { 【代码6】//返回成员变量power的值 C H A N G Z H O U U N I V E R S I T Y 实验报告 课程名称:JAVA程序设计 学生姓名:文浩班级计算机141 学号14416122 学院(系):信息数理学院指导教师:吕猛 实验时间:2016 年12 月 6 日实验名称:实验五基于Swing的图形用户界面开发实验 实验五基于Swing的图形用户界面开发实验 一实验容 (1)完成开发界面如图所示,实现如下功能 ①选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态 ②选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。单击“清空”按钮可以清空还没提交的容 ③在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息 (备注:名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。) 图1 图2 (2)记事本设计与实现 如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮助菜单(3)实现记事本的基本功能 二实验目的 (1)理解组件的分类 (2)掌握容器、布局管理器、普通组件的使用 (3)理解事件处理机制的工作原理 (4)掌握事件的添加和功能代码的编写方法 三实验过程 (1)问题分析 答:名片的设计除了使用最基本的组件,如JButton,Jlist,JCheckBox,JTextField, JRadioButton, CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后,就需要编写事件处理。首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过ArrayList 来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout 布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel 获取数据等。 (2)代码编写 答: (1) public class PersonInf { public String yourname; public String address1; 南京信息工程大学实验(实习)报告 实验(实习)名称Java类实验(实习)日期 10.17 得分指导教师刘文杰院计算机与软件学院专业软件工程年级 2017级班次 1 姓名张成学号20171344024 1.实验目的: 1)熟练MyEclipse工具的使用与调试; 2)掌握Java类、方法和变量的定义和使用; 3)熟悉方法重载和覆盖、掌握this和supper关键字使用; 4)掌握4类访问控制符的使用。 2.实验内容: (1)定义一个类Circle,实现其面积计算功能getArea(); (2)编写程序,读入一个正整数并按降序显示它的所有最小因子。(教材第3章习题9)(3)利用多态性编程,实现求三角形、正方形和圆形的面积。(教材第4章习题6) 3.实验步骤 1、 public class Circle { public double radius; public Circle(double r) { radius= r; } public double getArea() { return radius*radius*Math.PI; } public static void main(String[] args) { Circle area1 = new Circle(5); System.out.println("The area is " + area1.getArea()); } } 2、 import java.util.Scanner; public class Read { public static void main(String[] args) { Scanner input =new Scanner(System.in); System.out.print("输入一个正整数:"); int n=input.nextInt(); int []a=new int[n]; int []b=new int[n]; int p,q=0,m=0; for(p=2;p<=n;p++) { while(n%p==0) { n=n/p; if(n!=1) { a[q]=p; q++; } else { a[q]=p; } } } while(q!=-1) { b[m]=a[q]; m++; q--; } for(p=0;p 实验五Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFo nt.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体 复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的 前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;// 字体样式下拉框 JComboBox fontSize;// 字体大小下拉框 JComboBox windowStyle;// 窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;// 设置字体的默认颜色为黑色 String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " }; public ArtFont() { super(”字体设置"); // 设置默认字体 boldStyle = 0; italicStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体 "; 实验四类和对象;类的继承和派生;多态性; 接口;构造器应用 一、实验目的 1、掌握类与对象的关系; 2、掌握类的定义; 3、掌握对象的声明及使用; 4、掌握构造方法的概念及调用时机; 5、掌握构造方法的重载; 6、掌握匿名对象的使用。 二、实验学时 2学时 三、实验类型 验证性实验 四、实验需求 1、硬件 每位学生配备计算机一台 2、软件 Windows 7操作系统,JDK,eclipse,MySQL 3、网络 无 4、工具 无 五、实验理论与预备知识 1、类与对象的关系; 2、类的定义; 3、对象的声明及使用; 4、构造方法的概念及调用时机; 5、构造方法的重载; 6、匿名对象的使用。 六、实验内容与结果 1、编写一个应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯 形”和“圆形”。 //三角形类 class Trangle { double sidea,sideb,sidec,sjxzc,sjxmj; boolean boo; public Trangle(double a,double b,double c) { sidea=a; sideb=b; sidec=c; if(a+b>c && a+c>b && b+c>a) { boo=true; } else { boo=false; } } double getlength() { double length; length=sidea+sideb+sidec; return length; } public double getarea() { if(boo) { double area; double p=(sidea+sideb+sidec)/2.0; area=Math.sqrt(p*(p-sidea)*(p-sideb)*(p-sidec)); return area; } else { System.out.println("不是一个三角形,不能计算面积"); return 0; } } } //梯形类 class Lader 实验名称:实验5:Java 中的接口、匿名类和异常 班级:姓名:学号: 一、实验目的 熟悉Java 中的接口、匿名类和异常。 二、实验内容与结果 (说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。) 任务1:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberformatException异常和ArithmeticException异常。 package test; import java.util.*; public class test1 { public static void main(String args[]){ try{ System.out.println(shang()); } catch(NumberFormatException e){ System.out.println(e.getMessage( )); } catch(ArithmeticException e){ System.out.println(e.getMessage( )); } } static double shang(){ Scanner reader = new Scanner(System.in); String a,b; a = reader.next(); b = reader.next(); return Double.parseDouble(a)/Double.parseD ouble(b); } } 任务2:设计一个训练场,这个训练场专门训练海豚,使它们能够跳舞dance ()和发出“呼呼”的声音cry(),要求用内部类实现。 package test; import java.util.*; public class test1 { public static void main(String args[]){ training p = new training(); System.out.println(p.p.dance()); System.out.println(p.p.cry()); } } class training{ dolphin p; training(){ p = new dolphin(); } class dolphin{ String dance(){ return"dance"; } String cry(){ 实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。 实验四Java语言解决算法问题(4学时) 一、实验目的 (1)熟悉Java图形用户界面GUI类; (2)学习处理ActionEvent事件; (3)掌握事件源、监视器、处理事件的接口这三个概念; (4)使用Java语言解决算法问题。 二、实验学时:2学时 三、实验要求 (1)编写一个训练算术能力的测试软件; (2)Teacher类对象给出题目,判断答案是否正确;ComputerFrame类对象提供题目GUI 视图;MainClass作为主类。 四、实验原理 (1)事件源指的是能够产生事件的对象,如文本框、按钮等; (2)监视器指的是对事件源进行监视的对象,以便对发生的事件进行处理; (3)Java语言使用接口回调技术设计了它的处理事件模式。事件源增加监视的方法addXXXListener(XXXListener listener)中的参数是一个接口,listener可以引 用任何实现了该接口的类所创建的对象,当事件源发生事件时,接口listener立 刻回调被类实现的接口中的某个方法。 五、实验内容 课堂实验任务:请按模板要求,将【代码】替换为Java程序代码。 1.题目一算术测试 模板代码:Teacher.java public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)(Math.random()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)(Math.random()*n)+1; return numberTwo; } public String giveOperator() { double d=Math.random(); if(d>=0.5) operator="+"; else operator="-"; return operator; } public boolean getRight(int answer) { if(operator.equals("+")) { if(answer==numberOne+numberTwo) right=true; else right=false; } else if(operator.equals("-")) 华北电力大学 实验报告实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期: 一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java 【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】 //将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】 //将参数p的值赋值给成员变量power } int getPower() { 【代码6】 //返回成员变量power的值 } double getSpeed() { return speed; } } ---------------------------------------------------------------------------------------------- User.java实验5 类和对象1答案
JAVA试验
java实验二
实验五 Java事件处理
实验3 类和对象
JAVA实验四异常处理
Java程序设计-试验2(学生版)
java 程序设计 实验五
实验二 Java类-实验报告
实验五Java事件处理
Java实验四 -实验报告
JAVA实验五
C++语言程序设计实验答案_类与对象
实验四Java语言解决算法问题
java程序设计-试验2(学生版)()