java实验九选六已完成.docx
《java实验九选六已完成.docx》由会员分享,可在线阅读,更多相关《java实验九选六已完成.docx(32页珍藏版)》请在冰豆网上搜索。
java实验九选六已完成
实验一Java面向对象
实验目的:
深入理解、掌握面向对象的概念。
知识准备:
一.面向对象技术的基本概念:
类、对象、方法、构造方法、属性、修饰符、方法重载和覆盖、继承、多态、抽象类和接口、内部类等。
二.Package和import语句
三.JaveAPI常用包
四.Java名字空间及访问规则
五.This和Super
实验内容:
(选择其一)
一.写一个名为Stock的类模拟股票,类包含符号标志、名称、前期收盘价、当前价等属性,包含构造器方法和计算价格变化方法。
类结构如下表:
Stock
privateStringsymbol
privateStringname
privatedoublepreviousClosingPrice
privatedoublecurrentPrice
publicStock()
publicStock(Stringsymbol,Stringname)
publicStringgetSymbol()
publicStringgetName()
publicdoublegetPreviousClosingPrice()
publicdoublegetCurrentPrice()
publicvoidsetSymbol(Stringsymbol)
publicvoidsetName(Stringname)
publicvoidsetPreviousClosingPrice(doublepreviousClosingPrice)
publicvoidsetCurrentPrice(doublecurrentPrice)
publicdoublechangePercent()
请实现Stock类,并另写一个类来测试Stock类。
在测试类中,创建一个Stock对象,其股票标志为SUN、名称为SunMircosystemInc、前期收盘价为100。
随机设置一个新的当前价,显示价格变化比例。
二.设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。
小车类Car是Vehicle的子类,其中包含的属性有载人数loader。
卡车类Truck是Car类的子类,其中包含的属性有载重量payload。
每个类都有构造方法和输出相关数据的方法。
三.利用接口继承完成对生物biology、动物animal、人human三个接口的定义,其中生物接口定义呼吸breathe抽象方法,动物接口定义了吃饭eat和睡觉sleep两个抽象方法,人接口定义了思维think和学习learn两个抽象方法;定一个普通人类person实现上述三个接口定义的抽象方法。
四.定义一个类Family,描述一个家庭,其中包括私有的钱数money(属性)、受保护的祖传秘方secret(方法,在其中写输出语句模拟即可)、只在家族中能够使用的运输工具vehicle(方法,在其中写输出语句进行模拟),公共的门牌号码doorplate(属性)。
将这个家庭放置在一个包中(如china.hb.hd),编写一个该家庭的子类SubFamily,放置在另一个包(如china.beijing)中。
测试其中几种被可见性修饰符修饰过的属性和方法。
第一个
//————————————————————
publicclassStock{
privateStringsymbol;
privateStringname;
privatedoublepreviousPrice;
privatedoublecurrentPrice;
publicStock(){
}
publicStock(Stringsymbol,Stringname){
this.symbol=symbol;
this.name=name;
}
publicStringgetSymbol(){
returnsymbol;
}
publicStringgetName(){
returnname;
}
publicdoublegetPreviousPrice(){
returnpreviousPrice;
}
publicdoublegetCurrentPrice(){
returncurrentPrice;
}
publicvoidsetSymbol(Stringsymbol){
this.symbol=symbol;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicvoidsetPreviousPrice(doublepreviousPrice){
this.previousPrice=previousPrice;
}
publicvoidsetCurrentPrice(doublecurrentPrice){
this.currentPrice=currentPrice;
}
publicdoublechangePercent(){
return((currentPrice-previousPrice)/previousPrice);
}
}
//——————————————————————————
importjava.util.Scanner;
publicclassTestStock{
publicstaticvoidmain(String[]args){
Stocksun=newStock("SUN","SunMircosystemInc");
doublex=100.0d;
sun.setPreviousPrice(x);
Scannerscan=newScanner(System.in);
System.out.println("previousPrice=100,请输入一个新的当前价:
");
sun.setCurrentPrice(scan.nextDouble());
System.out.printf("\n价格变化为:
");
System.out.println(sun.changePercent()*100+"%");
}
}
实验二Java输入输出
实验目的:
深入理解、掌握Java输入输出流,。
知识准备:
一.Java基本输入输出类:
InputStream类、OutputStream类、Reader类、Writer类
二.File类
三.文件流和随机存取文件流
四.数据流
五.对象流-对象序列化和反序列化
六.字符流和字节流
实验内容:
(选择其二)
一.File类的应用-文件、文件夹的建立、删除、重命名等
二.将一个文本文件用readLine()读出到屏幕,并将其写入到另外一个文件中。
三.将指定范围内的素数写入文件,并读出,求出其中最大值、最小值、平均值。
四.输入5名学生的姓名、年龄,并将学生信息(要求用对象表示)写入文件并读出。
一:
—————————————————
//一.File类的应用-文件、文件夹的建立、删除、重命名等
importjava.io.File;
importjava.io.IOException;
publicclassExam2_1{
publicstaticvoidmain(String[]args)throwsIOException{
Filefile=newFile("d:
/","myfolder");
file.mkdir();
Filefile1=newFile("d:
/myfolder/my.txt");
file1.createNewFile();
System.out.println("文件夹建立"+file.exists());
System.out.println("文件建立:
"+file1.exists());
FilefileNew=newFile(file1.getParent(),"ThisaNewName.txt");
System.out.println("原始名字为:
"+file1.getName());
booleana;
if(a=file1.renameTo(fileNew)){
System.out.println("的重命名为:
"+fileNew.getName());
}
System.out.println("下面建立并删除file2文件");
Filefile2=newFile("d:
/myfolder/2.txt");
file2.createNewFile();
System.out.println("文件夹file2建立"+file.exists());
System.out.println("删除file2:
"+file2.delete());
}
}
二———————————————————
//二.将一个文本文件用readLine()读出到屏幕,并将其写入到另外一个文件中。
importjava.io.*;
publicclassExam2_2{
publicstaticvoidmain(String[]args)throwsIOException{
System.out.println("下面从先前准备好的文件JAVA.txt中读取信息");
Filefile=newFile("d:
/","JAVA.txt");
BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(newFileInputStream(file),"GBK"));
FilefileNew=newFile("d:
/","NewFile.txt");
fileNew.createNewFile();
FileWriterfileWriter=newFileWriter(fileNew);
BufferedWriterbufferedWriter=newBufferedWriter(fileWriter);
Stringstr=null;
str=bufferedReader.readLine();
while(str!
=null){
System.out.println(str);
fileWriter.write(str);
fileWriter.flush();
str=bufferedReader.readLine();
}
fileWriter.close();
bufferedReader.close();
}
}
实验三异常处理机制
实验目的:
深入理解、掌握面向对象的概念及其异常处理机制。
知识准备:
1.Exception的概念、子类及其继承关系
2.面向对象的异常处理机制
3.异常处理语句(try-catch-finally)
4.用throw语句抛出用户自定义Exception
5.用throws语句在方法声明抛出系统定义Exception
6.创建自己的异常
实验内容:
1.输入两个数据,显示两个数的商。
●当除数或被除数不是数字时抛出NumberFormatExcetpion,并用try…catch…finally语句进行处理。
●当除数为0时,捕获ArithmeticException,并在控制台上打印异常信息。
●自定义异常LowerThanZeroException,当除数、被除数小于0时抛出,
importjava.util.Scanner;
publicclassExam3{
staticintdividend;
staticintdivisor;
staticdoubleresult;
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
booleanjudge=false;
while(!
judge){
judge=true;
try{
System.out.println("请输入被除数:
");
dividend=scan.nextInt();
System.out.println("请输入除数:
");
divisor=scan.nextInt();
if(divisor==0)
thrownewArithmeticException();
if(dividend<0||divisor<0)
thrownewLowerThanZeroException();
result=(double)dividend/divisor;
}
catch(LowerThanZeroExceptione1){
judge=false;
System.out.println(e1.toString());
}
catch(ArithmeticExceptione2){
judge=false;
System.out.println(e2.toString());
}
catch(java.util.InputMismatchExceptione3){
judge=false;
thrownewNumberFormatException();
}
finally{
if(judge)
System.out.println("结果为:
"+result);
else
System.out.println("请重新输入:
");
}
}
}
}
classLowerThanZeroExceptionextendsException{
LowerThanZeroException(){
super("除数或被除数小于0");
}
@Override
publicStringtoString(){
Stringstr="除数或被除数小于0";
returnstr;
}
}
实验四Java常见类的使用和泛型
实验目的:
深入理解、掌握Arrays类,Java字符串String和StringBuffer类,正则表达式和模式匹配。
知识准备:
一.String和StringBuffer类的使用
二.日期类:
Date、Calender、DateFromat类
三.数学类:
Math类
四.Collection系列API简介
五.数据结构类:
LinkedList、HashSet、HashMap、TreeSet、TreeMap等BigInteger类
六.StringTokenizer类
七.泛型
八.正则表达式
实验内容:
(选择其二)
一.输入18位身份证号的前17位,输出1位校验位。
18位公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
六位数字地址码:
常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260执行。
八位数字出生日期码:
按GB/T7408的规定执行。
三位数字顺序码:
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数千分配给女性。
一位数字校验码:
采用ISO7064:
1983,MOD11-2校验码系统。
计算方法:
(1)十七位数字id[17]本体码加权求和公式
S=Sum(Ai*Wi),i=0,...,16,先对前17位数字的权求和
Ai:
表示第i位置上的身份证号码数字值
Wi:
表示第i位置上的加权因子,分别为w[17]7910584216379105842
(2)计算模:
Y=mod(S,11)
(3)通过模得到对应的校验码v[11]
Y
0
1
2
3
4
5
6
7
8
9
10
校验码
1
0
x
9
8
7
6
5
4
3
2
二.用HashSet实现集合的并、交、差集运算。
三.给定一个英文文本文件(>100MB),统计其中的各种不同的英文单词的个数,并将统计结果存入一个文件中。
四.给定一个HTML文件,将其中的IP地址、Email地址、超级链接输出。
五.利用Collection类实现扑克牌的洗牌。
二---------------------------------
///二.用HashSet实现集合的并、交、差集运算
importjava.util.HashSet;
importjava.util.Random;
classMyHashSet{
publicstaticvoidmain(String[]args){
HashSethashSetA=newHashSet();//集合1
HashSethashSetB=newHashSet();//集合2
hashSetA.add("appple");//为集合加入元素
hashSetA.add("banana");
hashSetA.add("bcycle");
hashSetB.add("appple");
hashSetB.add("home");
hashSetB.add("Car");
for(inti=0;i<10;i++){//为集合加入元素
intanyNumber;
Randomrandom=newRandom();
anyNumber=random.nextInt(10)+1;
hashSetA.add(anyNumber);
anyNumber=random.nextInt(10)+1;
hashSetB.add(anyNumber);
}
SetmySet=newSet(hashSetA,hashSetB);
System.out.printf("\n集合A为:
");
mySet.print(hashSetA);
System.out.printf("\n集合B为:
");
mySet.print(hashSetB);
System.out.printf("\nA和B的并集为:
");
mySet.print(mySet.getSum());
System.out.printf("\nA和B的交集为:
");
mySet.print(mySet.getMixed());
System.out.printf("\n集合A对B的差集为:
");
mySet.print(mySet.getDifference(hashSetA,hashSetB));
System.out.printf("\n集合B对A的差集为:
");
mySet.print(mySet.getDifference(hashSetB,hashSetA));
}
}
//可进行并、交、差集运算---------------
classSet{
privateHashSeth1=newHashSet();
privateHashSeth2=newHashSet();
privateHashSethSum=newHashSet();//并集
privateHashSethMixed=newHashSet();//交集
privateHashSethDifference=newHashSet();//h差集
publicSet(HashSeth1,HashSeth2){
this.h1=h1;
this.h2=h2;
for(Objectk:
h1){
hSum.add(k);
}
for(Objectk:
h2){
booleanb;
b=hSum.add(k);
if(!
b){
hMixed.add(k);
}
}
}
publicHashSetgetSum(){
returnhSum;
}
publicHashSetgetMixed(){
returnhMixed;
}
publicHashSetgetDifference(HashSeth1,HashSeth2){
this.h1=h1;
this.h2=h2;
for(Objectk:
h1){
booleanb;
b=hMixed.add(k);
if(b){
hDifference.add(k);
}
}
returnhDifference;
}
publicvoidprint(HashSeth){
inti=1;
for(Objectit:
h){
System.out.print(it+"");
if(i%10==0)
System.out.println("");
i++;
}
System.out.println("");
}
}
三—————————————————————————————————
////三.给定一个英文文本文件(>100MB),统计其中的各种不同的英文单词的个数,并将统计结果存入一个文件中。
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.RandomAccessFile;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Scanner;
importjava.util.StringTokenizer;
publicclassExam4_3{
staticStringfileName;
staticStringfilePath;
publicstaticvoidmain(String[]args)throwsException{
Scannerscan=newScanner(System.in);
System.out.println("输入读取文件的路径:
");
filePath=scan.nextLine();
System.out.println("输入要读取的文件名:
");
fileName=scan.nextLine();