java流实验内容及代码

时间:2019-05-12 22:27:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《java流实验内容及代码》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《java流实验内容及代码》。

第一篇: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){} } }

第三篇:Java语言实验指导书-实验10 流范文

一、实验目的(1)熟悉文件流操作方法。

(2)应用文件流操作文件。

二、实验内容

(1)利用流操作,在屏幕上显示文本文件内容及文件的路径、修改时间、大小、长度、可读性和可修改性等属性。

(2)借助流操作,以图形界面方式向文本文件添加记录并显示其记录内容。

三、实验要求

文件名通过命令行以参数方式输入。程序需要判断参数所提供文件的存在性。待添加的 记录通过TextField控件输入,文件内容通过TextArea控件显示。

第四篇:Java 实验 文件管理与IO流

作业要求:每个题保存为一个.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高级IO流程序设计

实验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(“

”+fs[i].getName());

}

}

}

五、实验指导与处理

六、分析讨论

实验教师评语成绩

签名:

日期:

下载java流实验内容及代码word格式文档
下载java流实验内容及代码.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Java实验五 IO流的一般使用

    Java实验五IO流的一般使用 实验目的:掌握文件类的使用,了解一般流的基本应用。加深处理代码的能力。 实验内容: import java.io.* ;public class lijun43 { public static void......

    JAVA代码注释规范

    JAVA代码注释规范 一、 规范存在的意义 1. 好的注释规范可以让人一眼看明白这是干什么的,特别是对于我们这种行业;共同合作完成一个项目需要分工明确,所以也需要有明了的注释规......

    java上机实验

    1、 实验一:多线程程序设计:炮打飞机 实验目的:学会使用多线程进行并发程序设计 实验内容:编写一个应用程序模拟大炮打飞机。在GUI界面上,飞机水平飞行,用界面上的按钮控制大炮的......

    JAVA实验指导书

    实验一、简单Java程序设计 一、实验目的 1. 学习使用JCreator开发JAVA代码。 2. 了解JAVA的运行环境,掌握开发JAVA代码所需要的相关配置。 3. 在JCreator中输入习题程序,验证程序......

    关于java文件流的简单示例

    package myjava; import java.io.*; public class InputStreamDemo1 {//根据文件返回一个输入流 private FileInputStream getFileInputStream(File file) {FileInputStream......