第一篇:java流实验内容及代码
实验7 流(2学时)
一、实验目的1.熟悉流类库中各种常用流的使用方法。
2.能够使用流类实现基本的文件读写。
二、实验内容
1.编写程序,在控制台窗口提示输入两个整数,然后接收这两个整数,并输出它们的和。(要求:键盘输入通过流封装System.in获取,不要使用Scanner类)
import java.io.*;System.out.println(x);System.out.println(“y”);public class Num1 {n=in.readLine();public static void main(String []args)y=Integer.parseInt(n);{System.out.println(y);int x=0,y=0;}catch(IOException e)BufferedReader in=new BufferedReader({
newSystem.out.println(“error”);InputStreamReader(System.in));}
String n;int s=x+y;
try{System.out.println(s);System.out.println(“x”);}
n=in.readLine();}
x=Integer.parseInt(n);
2.设计学生类Student,属性:编号(整型);姓名(字符串),成绩(整型)。编写一个程序:要求:(1)输入3个学生的姓名和成绩,将其姓名和成绩保存到data.txt中;(2)然后从该文件中读取数据,求得这三个学生的平均成绩。
import java.io.*;DataOutputStream dout = newDataOutputStream(public class num2 {newpublic static void main(String[]args)FileOutputStream(“D:data.txt”));{String n;
BufferedReader in=new BufferedReader(for(int i=0;i<5;i++)new{
InputStreamReader(System.in));n=in.readLine();
int num=Integer.parseInt(n);try{String name=in.readLine();
n=in.readLine();int grade=Integer.parseInt(n);dout.writeBytes(num+“rn”);dout.writeBytes(name+“rn”);dout.writeBytes(grade+“rn”);}dout.close();}catch(IOException e1){int num=Integer.parseInt(n);
n=din.readLine();String name=n;n=din.readLine();int grade=Integer.parseInt(n);ave+=grade;}System.out.println(“平均成绩”+ave*1.0/5);System.out.println(“文件写入失败”);}try{DataInputStream din =new DataInputStream(new FileInputStream(“D:data.txt”));int ave=0;String n;for(int i=0;i<5;i++){n=din.readLine();
三、实验要求
完成程序设计并提交实验报告。
在“);失败”);} }
}catch(FileNotFoundException e){System.out.println(“文件不存}catch(IOException e2){System.out.println(”文件读取}
第二篇:Java程序设计课程实验代码及答案
Java程序设计课程实验
上机实践1 初识JAVA.................................................................................................................3 实验
1一个简单的应用程序....................................................................................................3 实验
2一个简单的JAVA APPLET程序......................................................................................3 实验
3联合编译........................................................................................................................4 上机实践2 基本数据类型与控制语句........................................................................................5 实验1
输出希腊字母表............................................................................................................5 实验2
回文数............................................................................................................................6 实验3
猜数字游戏....................................................................................................................8 上机实践3 类与对象....................................................................................................................9 实验1
三角形、梯形和圆形的类封装.....................................................................................9 实验
2实例成员与类成员......................................................................................................12 实验
3使用PACKAGE语句与IMPORT语句............................................................................14 上机实践4 继承与接口..............................................................................................................16 实验
1继承..............................................................................................................................16 实验2
上转型对象..................................................................................................................19 实验3 接口回调.....................................................................................................................21 上机实践5 字符串、时间与数字..............................................................................................23 实验
1STRING类的常用方法..................................................................................................23 实验
2比较日期的大小..........................................................................................................24 实验
3处理大整数..................................................................................................................25 上机实践6 组件及事件处理......................................................................................................26 实验1
算术测试......................................................................................................................26 实验2
信号灯..........................................................................................................................29 实验3
布局与日历..................................................................................................................31 上机实践7 组件及事件处理2...................................................................................................35 实验1
方程求根......................................................................................................................35 实验2
字体对话框..................................................................................................................38 实验3
英语单词拼写训练......................................................................................................41 上机实践8 多线程.....................................................................................................................45 实验1
汉字打字练习..............................................................................................................45 实验2
旋转的行星..................................................................................................................47 实验3
双线程接力..................................................................................................................51 上机实践9 输入输出流..............................................................................................................54 实验1
学读汉字......................................................................................................................54 实验2
统计英文单词字..........................................................................................................57 实验2
读取ZIP文件...............................................................................................................61 上机实践10 JAVA 中的网络编程............................................................................................62 实验1
读取服务器端文件......................................................................................................62 实验2
使用套接字读取服务器端对象...................................................................................64 实验3
基于UDP的图像传输................................................................................................67 上机实践11 数据结构................................................................................................................71 实验1
扫雷小游戏..................................................................................................................71 实验2
排序与查找..................................................................................................................76 实验3
使用TREESET排序......................................................................................................77 上机实践12 JAVA SWING.......................................................................................................79 实验1
JLAYEREDPANE分层窗格............................................................................................79 实验2
使用表格显示日历......................................................................................................80 实验3
多文档界面(MDI)...................................................................................................83 2
上机实践1 初识Java 实验1 一个简单的应用程序
1.答案:
【代码1】:
System.out.println(“你好,很高兴学习Java”);【代码2】:
System.out.println(“We are students”);2.模板代码
Hello.java public class Hello {
public static void main(String args[ ])
{
【代码1】
//命令行窗口输出“你好,很高兴学习Java”
A a=new A();
a.fA();
} } class A {
void fA()
{
【代码2】
//命令行窗口输出“We are students”
} } 实验2 一个简单的Java Applet程序
1.答案:
【代码1】:
g.drawString(“这是一个Java Applet 程序”,10,30);【代码2】:
g.drawString(“我改变了字体”,20,50);2.模板代码
FirstApplet.java import java.applet.*;3 import java.awt.*;public class FirstApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.blue);【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color.red);g.setFont(new Font(“宋体”,Font.BOLD,36));【代码2】//在Java Applet中绘制一行文字:“我改变了字体” } } 实验3 联合编译
1.答案:
【代码1】:
System.out.println(“你好,只需编译我”);【代码2】:
System.out.println(“I am A”);【代码3】:
System.out.println(“I am B”);【代码4】:
System.out.println(“I am C”);2.模板代码
模板1:Hello.java public class MainClass { public static void main(String args[ ]){ 【代码1】 //命令行窗口输出“你好,只需编译我” A a=new A();a.fA();B b=new B();b.fB();} }
模板2 :A.java
public class A { void fA(){ 【代码2】 //命令行窗口输出“I am A” } } 模板3 :B.java
public class B { void fB(){ 【代码3】 //命令行窗口输出“I am B” } } 模板4 :C.java
public class C { void fC(){ 【代码4】 //命令行窗口输出“I am C” } }
上机实践2 基本数据类型与控制语句实验1 输出希腊字母表
1.答案:
【代码1】: startPosition=(int)cStart;
【代码2】: endPosition=(int)cEnd;
【代码3】: c=(char)i;
2.模板代码
GreekAlphabet.java
public class GreekAlphabet {
public static void main(String args[ ])
{
int startPosition=0,endPosition=0;
char cStart='α',cEnd='ω';
【代码1】
//cStart做int型转换据运算,并将结果赋值给startPosition
【代码2】
//cEnd做int型转换运算,并将结果赋值给endPosition
System.out.println(“希腊字母'α'在unicode表中的顺序位置:”+(int)c);
System.out.println(“希腊字母表:”);
for(int i=startPosition;i<=endPosition;i++)
{
char c=' ';
【代码3】
//i做char型转换运算,并将结果赋值给c
System.out.print(“ ”+c);if((i-startPosition+1)%10==0)
System.out.println(“");
}
} } 实验2 回文数
1.答案:
【代码1】: number<=99999&&number>=1 【代码2】: d5=number/10000;【代码3】: d4=number%10000/1000;【代码4】: d3=number%1000/100;【代码5】: d5!=0 【代码6】: d1==d5&&d2==d4 【代码7】: d4!=0
【代码8】: d1==d4&&d2==d3 【代码9】: d3!=0 【代码10】:d1==d3 2.模板代码
Number.java import javax.swing.JOptionPane;public class Number {
public static void main(String args[])
{
int number=0,d5,d4,d3,d2,d1;
String str=JOptionPane.showInputDialog(”输入一个1至99999之间的数“);
number=Integer.parseInt(str);
if(【代码1】)//判断number在1至99999之间的条件
{
【代码2】
//计算number的最高位(万位)d5
【代码3】
//计算number的千位d4
【代码4】
//计算number的百位d3
d2=number%100/10;
d1=number%10;
if(【代码5】)//判断number是5位数的条件
{
System.out.println(number+”是5位数“);
if(【代码6】)//判断number是回文数的条件
{
System.out.println(number+”是回文数“);
}
else
{
System.out.println(number+”不是回文数“);
}
}
else if(【代码7】)//判断number是4位数的条件
{
System.out.println(number+”是4位数“);
if(【代码8】)//判断number是回文数的条件码
{
System.out.println(number+”是回文数“);
}
else
{
System.out.println(number+”不是回文数“);
}
}
else if(【代码9】)//判断number是3位数的条件
{
System.out.println(number+”是3位数“);
if(【代码10】)//判断number是回文数的条件
{
System.out.println(number+”是回文数“);
}
else
{
System.out.println(number+”不是回文数“);
}
}
else if(d2!=0)
{
System.out.println(number+”是2位数“);
if(d1==d2)
{
System.out.println(number+”是回文数“);
}
else
{
System.out.println(number+”不是回文数“);
}
}
else if(d1!=0)
{
System.out.println(number+”是1位数“);
System.out.println(number+”是回文数“);
}
}
else
{
System.out.printf(”n%d不在1至99999之间“,number);
}
} } 实验3 猜数字游戏
1.答案:
【代码1】: yourGuess!=realNumber 【代码2】: yourGuess>realNumber
【代码3】: yourGuess 2.模板代码 GuessNumber.java import javax.swing.JOptionPane;public class GuessNumber { public static void main(String args[ ]) { System.out.println(”给你一个1至100之间的整数,请猜测这个数“); int realNumber=(int)(Math.random()*100)+1; int yourGuess=0; String str=JOptionPane.showInputDialog(”输入您的猜测:“); yourGuess=Integer.parseInt(str); while(【代码1】)//循环条件 { if(【代码2】)//条件代码 { str=JOptionPane.showInputDialog(”猜大了,再输入你的猜测:“); yourGuess=Integer.parseInt(str); } else if(【代码3】)//条件代码 { str=JOptionPane.showInputDialog(”猜小了,再输入你的猜测:“); yourGuess=Integer.parseInt(str); } } System.out.println(”猜对了!“); } } 上机实践3 类与对象 实验1 三角形、梯形和圆形的类封装 1.答案: 【代码1】: sideA=a;sideB=b;sideC=c; 【代码2】: a+b>c&&a+c>b&&c+b>a 【代码3】: boo=true; 【代码4】: boo=false; 【代码5】: if(boo) { length=sideA+sideB+sideC; return length; } else { System.out.println(”不是一个三角形,不能计算周长“); return 0; } 【代码6】: sideA=a;sideB=b;sideC=c;【代码7】: a+b>c&&a+c>b&&c+b>a 【代码8】: boo=true;【代码9】: boo=false;【代码10】: above=a; bottom=b; height=h; 【代码11】: area=(above+bottom)/2*height; return area;【代码12】: radius=r;9 【代码13】: return 3.14*radius*radius;【代码14】: return 3.14*2*radius;【代码15】: circle=new Circle(10);【代码16】: trangle=new Trangle(3,4,5);【代码17】: lader=new Lader(3,4,10);【代码18】: length=circle.getLength();【代码19】: area=circle.getArea();【代码20】: length=trangle.getLength();【代码21】: area=trangle.getArea();【代码22】: area=lader.getArea();【代码23】: trangle.setABC(12,34,1);【代码24】: area=trangle.getArea();【代码25】: length=trangle.getLength(); 2.模板代码 AreaAndLength.java class Trangle { double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) { 【代码1】 //参数a,b,c分别赋值给sideA,sideB,sideC if(【代码2】)//a,b,c构成三角形的条件表达式 { 【代码3】 //给boo赋值。 } else { 【代码4】 //给boo赋值。 } } double getLength() { 【代码5】 //方法体,要求计算出length的值并返回 } public double getArea() { if(boo) { 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; } } public void setABC(double a,double b,double c) { 【代码6】 //参数a,b,c分别赋值给sideA,sideB,sideC if(【代码7】)//a,b,c构成三角形的条件表达式 { 【代码8】 //给boo赋值。 } else { 【代码9】 //给boo赋值。 } } } class Lader { double above,bottom,height,area; Lader(double a,double b,double h) { 【代码10】 //方法体,将参数a,b,c分别赋值给above,bottom,height } double getArea() { 【代码11】 //方法体,,要求计算出area返回 } } class Circle { double radius,area; Circle(double r) { 【代码12】 //方法体 } double getArea() { 【代码13】 //方法体,要求计算出area返回 } double getLength() { 【代码14】 //getArea方法体的代码,要求计算出length返回 } void setRadius(double newRadius) { radius=newRadius; } double getRadius() { return radius; } } public class AreaAndLength { public static void main(String args[]) { double length,area; Circle circle=null; Trangle trangle; Lader lader; 【代码15】 //创建对象circle 【代码16】 //创建对象trangle。 【代码17】 //创建对象lader 【代码18】 // circle调用方法返回周长并赋值给length System.out.println(”圆的周长:“+length); 【代码19】 // circle调用方法返回面积并赋值给area System.out.println(”圆的面积:“+area); 【代码20】 // trangle调用方法返回周长并赋值给length System.out.println(”三角形的周长:“+length); 【代码21】 // trangle调用方法返回面积并赋值给area System.out.println(”三角形的面积:“+area); 【代码22】 // lader调用方法返回面积并赋值给area System.out.println(”梯形的面积:“+area); 【代码23】 // trangle调用方法设置三个边,要求将三个边修改为12,34,1。 【代码24】 // trangle调用方法返回面积并赋值给area System.out.println(”三角形的面积:“+area); 【代码25】 // trangle调用方法返回周长并赋值给length System.out.println(”三角形的周长:“+length); } } 实验2 实例成员与类成员 1.答案: 【代码1】: float a; 【代码2】: static float b; 【代码3】: this.a=a; 【代码4】: this.b=b;【代码5】: A.b=100; 【代码6】: A.inputB(); 【代码7】: cat.setA(200);【代码8】: cat.setB(400);【代码9】: dog.setA(150);【代码10】:dog.setB(300);【代码11】:cat.inputA();【代码12】:cat.inputB();【代码13】:dog.inputA();【代码14】:dog.inputB();2.模板代码 Example.java class A { 【代码1】 //声明一个float型实例变量a 【代码2】 //声明一个float型类变量b,即static变量b void setA(float a) { 【代码3】 //将参数a的值赋值给成员变量a } void setB(float b) { 【代码4】 //将参数b的值赋值给成员变量b } float getA() { return a; } float getB() { return b; } void inputA() { System.out.println(a); } static void inputB() { System.out.println(b); } } public class Example { public static void main(String args[]) { 【代码5】 //通过类名操作类变量b,并赋值100 【代码6】 //通过类名调用方法inputB() A cat=new A(); A dog=new A(); 【代码7】 //cat象调用方法setA(int a)将cat的成员a的值设置为200 【代码8】 //cat调用方法setB(int b)将cat的成员b的值设置为400 【代码9】 //dog象调用方法setA(int a)将dog的成员a的值设置为150 【代码10】 //dog调用方法setB(int b)将dog的成员b的值设置为300 【代码11】 //cat调用inputA()。 【代码12】 //cat调用inputB()。 【代码13】 //dog调用inputA()。 【代码14】 //dog调用inputB()。 } } 实验3 使用package语句与import语句 1.答案:无 2.模板代码 SquareEquation.java package tom.jiafei;public class SquareEquation { double a,b,c; double root1,root2; boolean boo; public SquareEquation(double a,double b,double c) { this.a=a; this.b=b; this.c=c; if(a!=0) { boo=true; } else { boo=false; } } public void getRoots() { if(boo) { System.out.println(”是一元2次方程“); double disk=b*b-4*a*c; if(disk>=0) { root1=(-b+Math.sqrt(disk))/(2*a); root2=(-b-Math.sqrt(disk))/(2*a); System.out.printf(”方程的根:%f,%fn“,root1,root2); } else { System.out.printf(”方程没有实根n“); } } else { System.out.println(”不是一元2次方程“); } } public void setCoefficient(double a,double b,double c) { this.a=a; this.b=b; this.c=c; if(a!=0) { boo=true; } else { boo=false; } } } SunRise.java import tom.jiafei.*;class SunRise { public static void main(String args[ ]) { SquareEquation equation=new SquareEquation(4,5,1); equation.getRoots(); equation.setCoefficient(-3,4,5); equation.getRoots(); } } 上机实践4 继承与接口 实验1 继承 1.答案: 【代码1】: public void speakHello() { System.out.println(”你好,吃饭了吗?“); } 【代码2】: public void averageHeight() { height=173; System.out.println(”中国人的平均身高:“+height+”厘米“); } 【代码3】: public void averageWeight() { weight=67.34; System.out.println(”中国人的平均体重:“+weight+”公斤“); } 【代码4】: System.out.println(”坐如钟,站如松,睡如弓“); 【代码5】: public void speakHello() { System.out.println(”How do You do“); } 【代码6】: public void averageHeight() { height=188; System.out.println(”Amerian Average height:“+height+” cm“); } 【代码7】: public void averageWeight() { weight=80.23; System.out.println(”Amerian Average weight:“+weight+” kg“); } 【代码8】: System.out.println(”直拳、钩拳“); 【代码9】: public void speakHello() { System.out.println(”您好“); } 【代码10】: public void averageHeight() { height=16; System.out.println(”北京人的平均身高:“+height+”厘米“); } 【代码11】: public void averageWeight() { weight=6; System.out.println(”北京人的平均体重:“+weight+”公斤“); } 【代码12】: System.out.println(”京剧术语“);2.模板代码 Example.java class People { protected double weight,height;public void speakHello(){ System.out.println(”yayawawa“);} public void averageHeight(){ height=173;System.out.println(”average height:“+height);} public void averageWeight(){ weight=70;System.out.println(”average weight:“+weight);} } class ChinaPeople extends People { 【代码1】 //重写public void speakHello()方法,要求输出类似“你好,吃了吗”这样的 //汉语信息 【代码2】 //重写public void averageHeight()方法,要求输出类似 //“中国人的平均身高:168.78厘米”这样的汉语信息 【代码3】 //重写public void averageWeight()方法,//要求输出类似“中国人的平均体重:65公斤”这样的汉语信息 public void chinaGongfu(){ 【代码4】//输出中国武术的信息,例如:”坐如钟,站如松,睡如弓“等 } } class AmericanPeople extends People { 【代码5】 //重写public void speakHello()方法,要求输出类似 //“How do you do”这样的英语信息。【代码6】 //重写public void averageHeight()方法 【代码7】 //重写public void averageWeight()方法 public void americanBoxing(){ 【代码8】//输出拳击的信息,例如,“直拳”、“钩拳”等 } } class BeijingPeople extends ChinaPeople { 【代码9】 //重写public void speakHello()方法,要求输出类似“您好”这样的汉语信息 【代码10】 //重写public void averageHeight()方法 【代码11】 //重写public void averageWeight()方法 public void beijingOpera(){ 【代码12】//输出京剧的信息 } } public class Example { public static void main(String args[]){ ChinaPeople chinaPeople=new ChinaPeople();18 AmericanPeople americanPeople=new AmericanPeople();BeijingPeople beijingPeople=new BeijingPeople();chinaPeople.speakHello();americanPeople.speakHello();beijingPeople.speakHello();chinaPeople.averageHeight();americanPeople.averageHeight();beijingPeople.averageHeight();chinaPeople.averageWeight();americanPeople.averageWeight();beijingPeople.averageWeight();chinaPeople.chinaGongfu();americanPeople.americanBoxing();beijingPeople.beijingOpera();beijingPeople.chinaGongfu();} } 实验2 上转型对象 1.答案: 【代码1】: public double earnings() { return 50000.456; } 【代码2】: public double earnings() { return 12*2300; } 【代码3】: public double earnings() { return 52*500; } 【代码4】: for(int i=0;i { salaries=salaries+employee[i].earnings(); } 2.模板代码 HardWork.java abstract class Employee { public abstract double earnings();} class YearWorker extends Employee { 【代码1】 //重写earnings()方法 } class MonthWorker extends Employee { 【代码2】 //重写earnings()方法。} class WeekWorker extends Employee { 【代码3】 //重写earnings()方法。} class Company { Employee[] employee; double salaries=0; Company(Employee[] employee) { this.employee=employee; } public double salariesPay() { salaries=0; 【代码4】 //计算salaries。 return salaries; } } public class HardWork { public static void main(String args[]) { Employee[] employee=new Employee[20]; for(int i=0;i { if(i%3==0) employee[i]=new WeekWorker(); else if(i%3==1) employee[i]=new MonthWorker(); else if(i%3==2) employee[i]=new YearWorker(); } Company company=new Company(employee); System.out.println(”公司年工资总额:“+company.salariesPay()); } } 实验3 接口回调 1.答案: 【代码1】: public double computeWeight() { return 45.5; } 【代码2】: public double computeWeight() { return 65.5; } 【代码3】: public double computeWeight() { return 145; } 【代码4】: for(int k=0;k { totalWeights=totalWeights+goods[k].computeWeight(); } 2.模板代码 Road.java interface ComputerWeight { public double computeWeight();} class Television implements ComputerWeight { 【代码1】 //实现computeWeight()方法。} class Computer implements ComputerWeight { 【代码2】 //实现computeWeight()方法。} class WashMachine implements ComputerWeight { 【代码3】 //实现computeWeight()方法。} class Car { ComputerWeight[] goods; double totalWeights=0; Car(ComputerWeight[] goods) { this.goods=goods; } public double getTotalWeights() { totalWeights=0; 【代码4】 //计算totalWeights return totalWeights; } } public class Road { public static void main(String args[]) { ComputerWeight[] goodsOne=new ComputerWeight[50],goodsTwo=new ComputerWeight[22]; for(int i=0;i { if(i%3==0) goodsOne[i]=new Television(); else if(i%3==1) goodsOne[i]=new Computer(); else if(i%3==2) goodsOne[i]=new WashMachine(); } for(int i=0;i { if(i%3==0) goodsTwo[i]=new Television(); else if(i%3==1) goodsTwo[i]=new Computer(); else if(i%3==2) goodsTwo[i]=new WashMachine(); } Car 大货车=new Car(goodsOne); System.out.println(”大货车装载的货物重量:“+大货车.getTotalWeights()); Car 小货车=new Car(goodsTwo); System.out.println(”小货车装载的货物重量:“+小货车.getTotalWeights()); } } 上机实践5 字符串、时间与数字 实验1 String类的常用方法 模板代码 StringExample.java class StringExample { public static void main(String args[]) { String s1=new String(”you are a student“),s2=new String(”how are you“); if(【代码1】)// 使用equals方法判断s1与s2是否相同 { System.out.println(”s1与s2相同“); } else { System.out.println(”s1与s2不相同“); } String s3=new String(”***24“); if(【代码2】) //判断s3的前缀是否是“220302”。 { System.out.println(”吉林省的身份证“); } String s4=new String(”你“),s5=new String(”我“); if(【代码3】)//按着字典序s4大于s5的表达式。 { System.out.println(”按字典序s4大于s5“); } else { System.out.println(”按字典序s4小于s5“); } int position=0; String path=”c:javajspA.java“; position=【代码5】 //获取path中最后出现目录分隔符号的位置 System.out.println(”c:javajspA.java中最后出现的位置:“+position); String fileName=【代码6】//获取path中“A.java”子字符串。 System.out.println(”c:javajspA.java中含有的文件名:“+fileName); String s6=new String(”100“),s7=new String(”123.678“); int n1=【代码7】 //将s6转化成int型数据。 double n2=【代码8】 //将s7转化成double型数据。 double m=n1+n2; System.out.println(m); String s8=【代码9】 //String调用valuOf(int n)方法将m转化为字符串对象 position=s8.indexOf(”.“); String temp=s8.substring(position+1); System.out.println(”数字“+m+”有“+temp.length()+”位小数“); String s9=new String(”ABCDEF“); char a[]=【代码10】 //将s8存放到数组a中。 for(int i=a.length-1;i>=0;i--) { System.out.print(” “+a[i]); } } } 实验2 比较日期的大小 模板代码 DateExample import java.util.*;import javax.swing.JOptionPane;public class DateExample { public static void main(String args[ ]) { String str=JOptionPane.showInputDialog(”输入第一个日期的年份:“); int yearOne=Integer.parseInt(str); str=JOptionPane.showInputDialog(”输入该年的月份:“); int monthOne=Integer.parseInt(str); str=JOptionPane.showInputDialog(”输入该月份的日期:“); int dayOne=Integer.parseInt(str); str=JOptionPane.showInputDialog(”输入第二个日期的年份:“); int yearTwo=Integer.parseInt(str); str=JOptionPane.showInputDialog(”输入该年的月份:“); int monthTwo=Integer.parseInt(str); str=JOptionPane.showInputDialog(”输入该月份的日期:“); int dayTwo=Integer.parseInt(str); Calendar calendar=【代码1】 //初始化日历对象 【代码2】 //将calendar的时间设置为yearOne年monthOne月dayOne日 long timeOne=【代码3】 //calendar表示的时间转换成毫秒 【代码4】 //将calendar的时间设置为yearTwo年monthTwo月dayTwo日 long timeTwo=【代码5】 //calendar表示的时间转换成毫秒。 Date date1=【代码6】 // 用timeOne做参数构造date1 Date date2=【代码7】 // 用timeTwo做参数构造date2 if(date2.equals(date1)) { System.out.println(”两个日期的年、月、日完全相同“); } else if(date2.after(date1)) { System.out.println(”您输入的第二个日期大于第一个日期“); } else if(date2.before(date1)) { System.out.println(”您输入的第二个日期小于第一个日期“); } long days=【代码8】//计算两个日期相隔天数 System.out.println(yearOne+”年“+monthOne+”月“+dayOne+”日和“ +yearTwo+”年“+monthTwo+”月“+dayTwo+”相隔“+days+”天“); } } 实验3 处理大整数 模板代码 BigintegerExample import java.math.*;class BigIntegerExample { public static void main(String args[]){ BigInteger n1=new BigInteger(”***321987654321“), n2=new BigInteger(”***789123456789“), result=null;result=【代码1】//n1和n2做加法运算 System.out.println(”和:“+result.toString());result=【代码2】//n1和n2做减法运算 System.out.println(”差:“+result.toString());result=【代码3】//n1和n2做乘法运算 System.out.println(”积:“+result.toString());result=【代码4】//n1和n2做除法运算 System.out.println(”商:“+result.toString());BigInteger m=new BigInteger(”1968957“), COUNT=new BigInteger(”0“), ONE=new BigInteger(”1“), TWO=new BigInteger(”2“);System.out.println(m.toString()+”的因子有:“);for(BigInteger i=TWO;i.compareTo(m)<0;i=i.add(ONE)){ if((n1.remainder(i).compareTo(BigInteger.ZERO))==0){ COUNT=COUNT.add(ONE);System.out.print(” “+i.toString());} } System.out.println(”“);System.out.println(m.toString()+”一共有“+COUNT.toString()+”个因子“);} } 上机实践6 组件及事件处理 实验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 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(”+“))26 { 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=【代码1】 //创建textOne,其可见字符长是10 textTwo=【代码2】 //创建textTwo,其可见字符长是10 textResult=【代码3】 //创建textResult,其可见字符长是10 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);【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器 【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器 【代码6】//将当前窗口注册为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(【代码7】)//判断事件源是否是getProblem { int number1=teacher.giveNumberOne(100);int number2=teacher.giveNumberTwo(100);String operator=teacher.givetOperator();textOne.setText(”“+number1);textTwo.setText(”“+number2);operatorLabel.setText(operator);message.setText(”请回答“);textResult.setText(null);} if(【代码8】)//判断事件源是否是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=【代码9】//创建窗口,其标题为:算术测试 } } 实验2 信号灯 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=【代码1】 //创建choice 【代码2】 //创建choice添加itemRed 【代码3】 //创建choice添加itemYellow 【代码4】 //创建choice添加itemGreen 【代码5】 //将当前窗口注册为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= 【代码6】 // 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(”信号灯“);} } 实验3 布局与日历 1.答案: 【代码1】: pCenter.setLayout(new GridLayout(7,7));【代码2】: pCenter.add(titleName[i]); 【代码3】: pCenter.add(labelDay[i]); 【代码4】: add(scrollPane,BorderLayout.CENTER);31 【代码5】: add(pNorth,BorderLayout.NORTH); 【代码6】: add(pSouth,BorderLayout.SOUTH); 2.模板代码 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(); 【代码1】 //将pCenter的布局设置为7行7列的GridLayout 布局。 for(int i=0;i<7;i++) { titleName[i]=new Button(name[i]); 【代码2】//pCenter添加组件titleName[i]。 } for(int i=0;i<42;i++) { labelDay[i]=new Label(”“,Label.CENTER); 【代码3】//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();33 pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); showMessage.setText(”日历:“+calendar.getYear()+”年“+ calendar.getMonth()+”月“); ScrollPane scrollPane=new ScrollPane(); scrollPane.add(pCenter); 【代码4】// 窗口添加scrollPane在中心区域 【代码5】// 窗口添加pNorth 在北面区域 【代码6】// 窗口添加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()34 { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); } } 上机实践7 组件及事件处理2 实验1 方程求根 1.答案: 【代码1】: controlButton.addActionListener(this);;【代码2】: textA.getText() 【代码3】: textB.getText() 【代码4】: textC.getText() 2.模板代码 SquareEquation.java public class SquareEquation { double a,b,c;double root1,root2;public void setA(double a){ this.a=a;} public void setB(double b){ this.b=b;} public void setC(double c){ this.c=c;} public double getRootOne()throws NoRealRootException,NoSquareEquationException { if(a!=0){ double disk=b*b-4*a*c;if(disk>=0){ root1=(-b+Math.sqrt(disk))/(2*a);} else { throw new NoRealRootException(”没有实根“);35 } } else { throw new NoRealRootException(”不是二次方程“);} return root1;} public double getRootTwo()throws NoRealRootException,NoSquareEquationException { if(a!=0){ double disk=b*b-4*a*c;if(disk>=0){ root2=(-b-Math.sqrt(disk))/(2*a);} else { throw new NoRealRootException(”没有实根“);} } else { throw new NoRealRootException(”不是二次方程“);} return root2;} } class NoRealRootException extends Exception { String message;NoRealRootException(String s){ message=s;} public String getMessage(){ return message;} } class NoSquareEquationException extends Exception { String message;NoSquareEquationException(String s){ message=s;} public String getMessage(){ return message;} } EquationFrame.java import java.awt.*;import java.awt.event.*;public class EquationFrame extends Frame implements ActionListener { SquareEquation equation;TextField textA,textB,textC;TextArea showRoots;Button controlButton;public EquationFrame(){ equation=new SquareEquation();textA=new TextField(8);textB=new TextField(8);textC=new TextField(8);showRoots=new TextArea();controlButton=new Button(”确定“);Panel pNorth=new Panel();pNorth.add(new Label(”二次项系数:“));pNorth.add(textA);pNorth.add(new Label(”一次项系数:“));pNorth.add(textB);pNorth.add(new Label(”常数项系数:“));pNorth.add(textC);pNorth.add(controlButton);【代码1】 //当前窗口作为controlButton的ActionEvent事件的监视器 add(pNorth,BorderLayout.NORTH);add(showRoots,BorderLayout.CENTER);setBounds(100,100,630,160);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ try{ double a=Double.parseDouble(【代码2】);//textA调用方法获取其中的文本 double b=Double.parseDouble(【代码3】);//textB调用方法获取其中的文本 double c=Double.parseDouble(【代码4】);// textC调用方法获取其中的文本 equation.setA(a);equation.setB(b);equation.setC(c);textA.setText(”“+a);37 textB.setText(”“+b);textC.setText(”“+c);showRoots.append(”n 根:“+equation.getRootOne());showRoots.append(” 根:“+equation.getRootTwo());} catch(Exception ex){ showRoots.append(”n“+ex+”n“);} } } EquationMainClass.java public class EquationMainClass { public static void main(String args[]){ EquationFrame frame=new EquationFrame();} } 实验2 字体对话框 1.答案: 【代码1】: setModal(true); 【代码2】: setVisible(false); 【代码3】: setVisible(false); 【代码4】: new FontDialog(this);【代码5】: setVisible(true);【代码6】: dialog.setTitle(”字体对话框“); 2.模板代码 FontFamilyNames.java import java.awt.GraphicsEnvironment;public class FontFamilyNames { String fontName[];public String [] getFontName(){ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();fontName=ge.getAvailableFontFamilyNames();return fontName;} } FontDialog.java import java.awt.event.*;import java.awt.*;import javax.swing.JLabel; public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames;int fontSize=38;String fontName;Choice fontNameList;JLabel label;Font font;Button yes,cancel;static int YES=1,NO=0;int state=-1;FontDialog(Frame f){ super(f);fontFamilyNames=new FontFamilyNames();【代码1】 //对话框设置为有模式 yes=new Button(”Yes“);cancel=new Button(”cancel“);yes.addActionListener(this);cancel.addActionListener(this);label=new JLabel(”hello,奥运“,JLabel.CENTER);fontNameList=new Choice();String name[]=fontFamilyNames.getFontName();for(int k=0;k label.setFont(font);label.repaint();validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==yes){ state=YES;【代码2】 //对话框设置为不可见 } else if(e.getSource()==cancel){ state=NO;【代码3】 //对话框设置为不可见 } } public int getState(){ return state;} public Font getFont(){ return font;} } FrameHaveDialog.java import java.awt.event.*;import java.awt.*;import javax.swing.JTextArea;public class FrameHaveDialog extends Frame implements ActionListener { JTextArea text;Button buttonFont;FrameHaveDialog(){ buttonFont=new Button(”设置字体“);text=new JTextArea(”Java 2实用教程(第三版)“);buttonFont.addActionListener(this);add(buttonFont,BorderLayout.NORTH);add(text);setBounds(60,60,300,300);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} 40 public void actionPerformed(ActionEvent e){ if(e.getSource()==buttonFont){ FontDialog dialog=【代码4】 //创建对话框 【代码5】 //对话框设置为可见 【代码6】 //对话框设置设置标题为“字体对话框” if(dialog.getState()==FontDialog.YES){ text.setFont(dialog.getFont());text.repaint();} if(dialog.getState()==FontDialog.NO){ text.repaint();} } } } FontDialogMainClass.java public class FontDialogMainClass { public static void main(String args[]){ new FrameHaveDialog();} } 实验3 英语单词拼写训练 1.答案: 【代码1】: addFocusListener(this); 【代码2】: addMouseListener(this); 【代码3】: label[k].addKeyListener(this); 【代码4】: e.getKeyCode()==KeyEvent.VK_LEFT 【代码5】: e.getKeyCode()==KeyEvent.VK_RIGHT 2.模板代码 RondomString.java public class RondomString { String str=”“;public String getRondomString(String s){ StringBuffer strBuffer=new StringBuffer(s);int m=strBuffer.length();for(int k=0;k strBuffer=strBuffer.deleteCharAt(index);} return str;} } LetterLabel.java import java.awt.*;import java.awt.event.*;public class LetterLabel extends Button implements FocusListener,MouseListener { LetterLabel(){ 【代码1】 //将当前对象注册为自身的焦点视器 【代码2】 //将当前对象注册为自身的标监视器 setBackground(Color.cyan);setFont(new Font(”“,Font.BOLD,30));} public static LetterLabel[] getLetterLabel(int n){ LetterLabel a[]=new LetterLabel[n];for(int k=0;k import java.awt.*;import java.awt.event.*;import javax.swing.Box; public class SpellingWordFrame extends Frame implements KeyListener,ActionListener { TextField inputWord;Button button;LetterLabel label[];Panel northP,centerP;Box wordBox;String hintMessage=”用鼠标单击字母,按左右箭头交换字母,将其排列成所输入的单词“;Label messaageLabel=new Label(hintMessage);String word=”“;SpellingWordFrame(){ inputWord=new TextField(12);button=new Button(”确定“);button.addActionListener(this);inputWord.addActionListener(this);northP=new Panel();northP.add(new Label(”输入一个英文单词:“));northP.add(inputWord);northP.add(button);centerP=new Panel();wordBox=Box.createHorizontalBox();centerP.add(wordBox);add(northP,BorderLayout.NORTH);add(centerP,BorderLayout.CENTER);add(messaageLabel,BorderLayout.SOUTH);setBounds(100,100,350,180);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ word=inputWord.getText();int n=word.length();RondomString rondom=new RondomString();String randomWord=rondom.getRondomString(word);wordBox.removeAll();messaageLabel.setText(hintMessage);if(n>0){ label=LetterLabel.getLetterLabel(n);for(int k=0;k { 【代码3】 //将当前窗口注册为label[k]的键盘监视器 label[k].setText(”“+randomWord.charAt(k));wordBox.add(label[k]);} validate();inputWord.setText(null);label[0].requestFocus();} } public void keyPressed(KeyEvent e){ LetterLabel sourceLabel=(LetterLabel)e.getSource();int index=-1;if(【代码4】)//判断按下的是否是←键){ for(int k=0;k { String success=”“;for(int k=0;k WordMainClass.java public class WordMainClass { public static void main(String args[]){ new SpellingWordFrame();} } 上机实践8 多线程 实验1 汉字打字练习 1.答案: 【代码1】: sleep(6000); 【代码2】: WordThread giveWord; 【代码3】: giveWord=new WordThread(wordLabel); 【代码4】: giveWord.isAlive() 【代码5】: giveWord.start(); 2.模板代码 WordThread.java import java.awt.*;public class WordThread extends Thread { char word;int k=19968;45 Label com;WordThread(Label com){ this.com=com;} public void run(){ k=19968;while(true){ word=(char)k;com.setText(”“+word);try{ 【代码1】//调用sleep方法使得线程中断6000豪秒 } catch(InterruptedException e){} k++;if(k>=29968)k=19968;} } } ThreadFrame.java import java.awt.*;import java.awt.event.*;public class ThreadFrame extends Frame implements ActionListener { Label wordLabel;Button button;TextField inputText,scoreText;【代码2】//用WordThread声明一个giveWord对象 int score=0;ThreadFrame(){ wordLabel=new Label(” “,Label.CENTER);wordLabel.setFont(new Font(”“,Font.BOLD,72));button=new Button(”开始“);inputText=new TextField(3);scoreText=new TextField(5);scoreText.setEditable(false);【代码3】//创建giveWord,将wordLabel传递给WordThread构造方法的参数 button.addActionListener(this);inputText.addActionListener(this);add(button,BorderLayout.NORTH);add(wordLabel,BorderLayout.CENTER);Panel southP=new Panel();southP.add(new Label(”输入标签所显示的汉字后回车:“));southP.add(inputText);southP.add(scoreText); add(southP,BorderLayout.SOUTH);setBounds(100,100,350,180);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ if(!(【代码4】))//giveWord调用方法isAlive(){ giveWord=new WordThread(wordLabel);} try { 【代码5】//giveWord调用方法start()} catch(Exception exe){} } else if(e.getSource()==inputText){ if(inputText.getText().equals(wordLabel.getText())){ score++;} scoreText.setText(”得分:"+score);inputText.setText(null);} } } WordThread.java public class ThreadWordMainClass { public static void main(String args[]){ new ThreadFrame();} 实验2 旋转的行星 1.答案: 【代码1】: Thread moon; 【代码2】: thread=new Thread(this); 【代码3】: Thread.sleep(10); 【代码4】: Thread rotate;【代码5】: rotate.start(); 2.模板代码 Mycanvas.java import java.awt.*;public class Mycanvas extends Canvas { int r;Color c;public void setColor(Color c){ this.c=c;} public void setR(int r){ this.r=r;} public void paint(Graphics g){ g.setColor(c);g.fillOval(0,0,2*r,2*r);} public int getR(){ return r;} } Planet.java import java.awt.*;public class Planet extends Panel implements Runnable { 【代码1】 //用Thread类声明一个moon对象 Mycanvas yellowBall;double pointX[]=new double[360], pointY[]=new double[360];//用来表示画布左上角端点坐标的数组 int w=100,h=100;int radius=30;Planet(){ setSize(w,h);setLayout(null);yellowBall=new Mycanvas();yellowBall.setColor(Color.yellow);add(yellowBall);yellowBall.setSize(12,12);yellowBall.setR(12/2);pointX[0]=0;48 pointY[0]=-radius;double angle=1*Math.PI/180;//刻度为1度 for(int i=0;i<359;i++)//计算出数组中各个元素的值 { pointX[i+1]=pointX[i]*Math.cos(angle)-Math.sin(angle)*pointY[i];pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle); } for(int i=0;i<360;i++){ pointX[i]=pointX[i]+w/2;//坐标平移 pointY[i]=pointY[i]+h/2;} yellowBall.setLocation((int)pointX[0]-yellowBall.getR(),(int)pointY[0]-yellowBall.getR());【代码2】 //创建 moon线程,当前面板做为该线程的目标对象 } public void start(){ try{ moon.start();} catch(Exception exe){} } public void paint(Graphics g){ g.setColor(Color.blue);g.fillOval(w/2-9,h/2-9,18,18);} public void run(){ int i=0;while(true){ i=(i+1)%360;yellowBall.setLocation((int)pointX[i]-yellowBall.getR(),(int)pointY[i]-yellowBall.getR());try{ 【代码3】 // Thread类调用类方法sleep使得线程中断10豪秒 } catch(InterruptedException e){} } } } HaveThreadFrame.java import java.awt.*;import java.awt.event.*;public class HaveThreadFrame extends Frame implements Runnable { 【代码4】 //用Thread类声明一个rotate对象 Planet earth;double pointX[]=new double[360], pointY[]=new double[360];int width,height; int radius=120;HaveThreadFrame(){ rotate=new Thread(this);earth=new Planet();setBounds(0,0,360,400);width=getBounds().width;height=getBounds().height;pointX[0]=0;pointY[0]=-radius;double angle=1*Math.PI/180;for(int i=0;i<359;i++){ pointX[i+1]=pointX[i]*Math.cos(angle)-Math.sin(angle)*pointY[i];pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle);} for(int i=0;i<360;i++){ pointX[i]=pointX[i]+width/2;pointY[i]=pointY[i]+height/2;} setLayout(null);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });add(earth);earth.setLocation((int)pointX[0]-earth.getSize().width/2,(int)pointY[0]-earth.getSize().height/2);earth.start();【代码5】 //用rotate调用start方法 } public void run(){ int i=0;while(true){ i=(i+1)%360;earth.setLocation((int)pointX[i]-earth.getSize().width/2,(int)pointY[i]-earth.getSize().height/2);try{ Thread.sleep(100);} catch(InterruptedException e){} } } 一、实验目的(1)熟悉文件流操作方法。 (2)应用文件流操作文件。 二、实验内容 (1)利用流操作,在屏幕上显示文本文件内容及文件的路径、修改时间、大小、长度、可读性和可修改性等属性。 (2)借助流操作,以图形界面方式向文本文件添加记录并显示其记录内容。 三、实验要求 文件名通过命令行以参数方式输入。程序需要判断参数所提供文件的存在性。待添加的 记录通过TextField控件输入,文件内容通过TextArea控件显示。 作业要求:每个题保存为一个.java文件,保存在同一工程文件夹中,文件夹的名字为E:Java你的班级+姓名,例如:E:Java信息11张三。 注意:上交的程序包含程序的执行结果,以注释的形式附在程序后面。 实验六文件管理与I/O流 一、实验目的1.熟悉用文件File类创建、删除、查看文件或目录。 2.字节流、字符流、缓冲流、随机流等流式文件的创建,读写操作。 3.用字符流和缓冲流从键盘接受字符串的方法。 二、实验内容 1.先运行该程序。源文件是sy6_1.java。然后按【思考问题】分析程序。 import java.io.*; public class sy6_1{ public static void main(String[] args)throws Exception { int x=0; File Mypath; Mypath=new File(“E:aaaa”); if(!Mypath.exists()) {System.out.println(“创建新目录”);Mypath.mkdir();} else System.out.println(“目录已存在”); File Myfile1=new File(Mypath,“myfile1.txt”); File Myfile2=new File(Mypath,“myfile2.txt”); File Myfile3=new File(Mypath,“myfile3.txt”); FileInputStream Fin=new FileInputStream(Myfile1); FileOutputStream Fout=new FileOutputStream(Myfile1); DataOutputStream Dout=new DataOutputStream(new FileOutputStream(Myfile2)); DataInputStream Din=new DataInputStream(new FileInputStream(Myfile2)); PrintWriter PWout=new PrintWriter(new FileWriter(Myfile3)); RandomAccessFile RAread=new RandomAccessFile(Myfile3,“r”); String str; int num1; BufferedReader buf;//缓冲流 buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print(“请输入一个小于255整型数:”); while(!(str=buf.readLine()).equalsIgnoreCase(“q”)) { System.out.print(“请输入另一个小于255整型数,按Q结束:”); num1=Integer.parseInt(str); Fout.write(num1); }Fout.close(); System.out.println(“你刚输入的数据是:”); while((x=Fin.read())!=-1) { System.out.println(x); }Fin.close(); System.out.print(“请输入int范围内整型数:”); while(!(str=buf.readLine()).equalsIgnoreCase(“q”)) { System.out.print(“请输入另一个整型数,按Q结束:”); num1=Integer.parseInt(str); Dout.writeInt(num1); }Dout.close(); int leng=Din.available()/4; int xxx=0; while(xxx { xxx++; x=Din.readInt(); System.out.println(x); } Din.close(); System.out.print(“请输入第一个字符串:”); while((str=buf.readLine())!=null) { System.out.print(“请输入另一个字符串,按Ctrl+Z结束:”); PWout.println(str);//写入myfile3.txt中 } PWout.close(); RAread.seek(0); while(RAread.getFilePointer() {System.out.println(RAread.readLine());//从myfile3.txt中一行一行读并输出在控制台上 } RAread.close(); System.out.println(“完成”); } } 【思考问题】 ① 本程序共用到哪几种流式文件?都用于做什么? 答:基本输入输出流:System.in.输入(从键盘) System.out.输出(显示器) 字节流类:FileOutputStream 文件输出 FileInputStream 文件输入 DataOutputStream数据输出 DataInputStream数据输入 字符流类:PrintWriter输入 缓冲文件流:BufferedReader ② 运行完程序后,请用“我的电脑”找到创建的文件,并分别打开文件看其内容,你 看到的是你输入的数据吗? 答:myfile1和myfile2中的数据非输入数据,myfile3中可以看见输入的数据。③ 将创建输入流对象Fin放在输出流Fout前,看发生什么? ④ 对第二种流式文件判断文件占用字节的长度用available()方法,而此处用int leng=Din.available()/4;为什么除以4? 2.按照第1题的内容,修改程序要求每次重新运行不覆盖原内容,把所有其它流式文件全部改用随机流式文件来实现,新的数据填加在文件尾,然后读出校验。 import java.io.*; public class sy6_2 { public static void main(String[] args)throws Exception { File Mypath; Mypath = new File(“E:aaa”); if(!Mypath.exists()) {System.out.println(“创建新目录”);Mypath.mkdir();} else System.out.println(“目录已存在”); File Myfile1 = new File(Mypath, “myfile1.txt”); File Myfile2 = new File(Mypath, “myfile2.txt”); File Myfile3 = new File(Mypath, “myfile3.txt”); RandomAccessFile rf1 = new RandomAccessFile(Myfile1, “rw”); RandomAccessFile rf2 = new RandomAccessFile(Myfile2, “rw”); RandomAccessFile rf3 = new RandomAccessFile(Myfile3, “rw”); String str; int num1; BufferedReader buf;//缓冲流 buf = new BufferedReader(new InputStreamReader(System.in)); System.out.print(“请输入一个小于255整型数:”); rf1.seek(rf1.length());//指针移到文件尾进行写操作 while(!(str=buf.readLine()).equalsIgnoreCase(“q”)) { System.out.print(“请输入另一个小于255整型数,按Q结束:”);num1=Integer.parseInt(str); rf1.write(num1);//将整型数作为ascii码值所对应的字符写入myfile1.txt中} rf1.seek(0);//指针移到文件头进行读操作 int x=0; while((x=rf1.read())!=-1) { System.out.println(x); } rf1.close(); System.out.print(“请输入int范围内整型数:”); rf2.seek(rf2.length()); while(!(str = buf.readLine()).equalsIgnoreCase(“q”)){ System.out.print(“请输入另一个整型数,按Q结束:”); num1 = Integer.parseInt(str); rf2.writeInt(num1); } int x1 = 0; for(int l = 0;l { rf2.seek(l*4); x1 = rf2.readInt(); System.out.println(x1); } rf2.close(); System.out.print(“请输入第一个字符串:”); rf3.seek(rf3.length()); while((str = buf.readLine())!= null){ System.out.println(“请输入另一个字符串,按Ctrl+Z结束:”);rf3.writeUTF(str);//写入myfile3.txt中 } rf3.seek(0); while(rf3.getFilePointer()< rf3.length()){ System.out.println(rf3.readUTF());//从myfile3.txt中读出字符串并输出在控制台上 } rf3.close(); System.out.println(“完成”); } } 三、实验报告要求 1.回答第1题【思考问题】提出的问题。 2.写出第二题要求的源程序。 实验12:Java高级I/O流程序设计 实验时间:实验地点: 一、实验目的及要求 (1)掌握文件类File的使用。 (2)理解随机存取文件类RandomAccessFile的使用。 二、实验设备环境及要求 三、实验任务 (1)按要求编写Java Application程序,并编译、运行这个程序。 四、实验内容与步骤 1.输出当前目录下my.txt文件的基本信息。 import java.io.*; import java.util.*; public class FileTest{ public static void main(String args[]){File f=new File(“my.txt”);System.out.println(“Absolute path: ” + f.getAbsolutePath()+“n Can read: ” + f.canRead()+“n Can write: ” + f.canWrite()+“n getName: ” + f.getName()+“n getParent: ” + f.getParent()+“n getPath: ” + f.getPath()+“n length: ” + f.length()+“n lastModified: ” + new Date(f.lastModified()));if(f.isFile())System.out.println(“It's a file”); }}else if(f.isDirectory())System.out.println(“It's a directory”); 2.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的文件。 import java.io.*; class FileDir{ public static void main(String args[]){ File f=new File(“D:”); File fs[]=f.listFiles(); for(int i=0;i if(fs[i].isFile()) System.out.println(fs[i].getName()); else System.out.println(“ } } } 五、实验指导与处理 六、分析讨论 实验教师评语成绩 签名: 日期:第三篇:Java语言实验指导书-实验10 流范文
第四篇:Java 实验 文件管理与IO流
第五篇:实验12:Java高级IO流程序设计