第08周实验 枚举 泛型 常用类Word文件下载.docx
《第08周实验 枚举 泛型 常用类Word文件下载.docx》由会员分享,可在线阅读,更多相关《第08周实验 枚举 泛型 常用类Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
else
returnsummer;
/*还可以有构造方法*/
publicenumTemp{
/*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错
*赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值
*如果不赋值则不能写构造器,赋值编译也出错*/
absoluteZero(-459),freezing(32),boiling(212),paperBurns(451);
privatefinalintvalue;
publicintgetValue(){
returnvalue;
//构造器默认也只能是private,从而保证构造函数只能在内部使用
Temp(intvalue){
this.value=value;
publicstaticvoidmain(String[]args){
/*
*枚举类型是一种类型,用于定义变量,以限制变量的赋值赋值时通过"
枚举名.值"
来取得相关枚举中的值
*/
ColorSelectm=ColorSelect.blue;
switch(m){
/*注意:
枚举重写了ToString(),说以枚举变量的值是不带前缀的
*所以为blue而非ColorSelect.blue
casered:
System.out.println("
colorisred"
);
break;
casegreen:
colorisgreen"
caseyellow:
colorisyellow"
caseblue:
colorisblue"
遍历ColorSelect中的值"
/*通过values()获得枚举值的数组*/
for(ColorSelectc:
ColorSelect.values()){
System.out.println(c);
}
System.out.println("
枚举ColorSelect中的值有:
"
+ColorSelect.values().length+"
个"
/*ordinal()返回枚举值在枚举中的索引位置,从0开始*/
System.out.println(ColorSelect.red.ordinal());
//0
System.out.println(ColorSelect.green.ordinal());
//1
System.out.println(ColorSelect.yellow.ordinal());
//2
System.out.println(ColorSelect.blue.ordinal());
//3
/*枚举默认实现了java.lang.Comparable接口*/
System.out.println(ColorSpareTo(ColorSelect.green));
System.out.println(Season.getBest());
for(Tempt:
Temp.values())
{
/*通过getValue()取得相关枚举的值*/
System.out.println(t+"
的值是"
+t.getValue());
}
要求:
(1)分析该程序,写出运行结果
【实验结果与分析】
2、编辑、编译、运行下面java程序
classGen<
T>
{
privateTob;
//定义泛型成员变量
publicGen(Tob){
this.ob=ob;
publicTgetOb(){
returnob;
publicvoidsetOb(Tob){
publicvoidshowTyep(){
T的实际类型是:
"
+ob.getClass().getName());
publicclassGenDemo
publicstaticvoidmain(String[]args){
//定义泛型类Gen的一个Integer版本
Gen<
Integer>
intOb=newGen<
(88);
intOb.showTyep();
inti=intOb.getOb();
value="
+i);
----------------------------------"
//定义泛型类Gen的一个String版本
String>
strOb=newGen<
("
HelloGen!
strOb.showTyep();
Strings=strOb.getOb();
+s);
要求:
_________________________________________________________________________________
3、编辑并运行下面程序,理解Date、SimpleDateFormat类的使用
用Data类不带参数的构造方法创建日期,要求日期的输出格式是:
星期小时分秒
importjava.util.*;
importjava.text.*;
classTestDateDemo
publicstaticvoidmain(Stringargs[])
Date时间=newDate();
SimpleDateFormats=newSimpleDateFormat("
EHH时mm分ss秒"
System.out.println(s.format(时间));
}
运行程序,给出正确的程序运行结果,理解正规式的使用。
________________________________________________________________________________
4、编辑并运行下面程序,理解Calendar类的使用
importjavax.swing.JOptionPane;
publicclassTestDateDemo
publicstaticvoidmain(String[]agrs){
Stringstr=JOptionPane.showInputDialog("
输入第一个年份:
intfirstYear=Integer.parseInt(str);
str=JOptionPane.showInputDialog("
输入月份:
intfirstMonth=Integer.parseInt(str);
日期:
intfirstDay=Integer.parseInt(str);
输入第二个年份:
intsecondYear=Integer.parseInt(str);
intsecondMonth=Integer.parseInt(str);
intsecondDay=Integer.parseInt(str);
Calendarcalendar=Calendar.getInstance();
calendar.set(firstYear,firstMonth,firstDay);
longtimeOne=calendar.getTimeInMillis();
System.out.println(timeOne);
calendar.set(secondYear,secondMonth,secondDay);
longtimeTwo=calendar.getTimeInMillis();
Datedate1=newDate(timeOne);
Datedate2=newDate(timeTwo);
if(date2.equals(date1)){
两个日期相同"
}elseif(date2.after(date1)){
第二个日期大"
}elseif(date2.before(date1)){
第一个日期大"
longdays=(timeOne-timeTwo)/(1000*60*60*24);
System.out.println(firstYear+"
年"
+firstMonth+"
月"
+firstDay+"
日"
System.out.println(secondYear+"
+secondMonth+"
+secondDay+"
相隔天数"
+days);
运行程序,给出正确的程序运行结果,分析程序的功能。
5、编辑并运行下面程序,理解BigInteger类的使用
importjava.math.BigInteger;
classTestNumDemo
publicstaticvoidmain(String[]args)
{
longa=2222321,b=2462355,c=16;
BigIntegerx,y,z,ans;
x=BigInteger.valueOf(a);
y=BigInteger.valueOf(b);
z=BigInteger.valueOf(c);
x="
+x+"
\ty="
+y+"
\tz="
+z);
ans=x.add(y);
//加运算
x+y="
+ans);
ans=x.subtract(y);
//减运算
x-y="
ans=x.multiply(y);
//乘运算
x*y="
ans=z.divide(y);
//除运算
z/y="
ans=x.mod(z);
//模运算
zmody="
if(pareTo(x)==0)
1"
newTestNumDemo().dis();
staticvoiddis()
BigIntegerans;
BigIntegerx=newBigInteger("
1212434623673632"
//BigInteger(intnumBits,Randomrnd)
//构造一个随机产生的大整数,范围在0到2^numBits–1之间
Randomrr=newRandom();
intnumBits=100;
BigIntegery=newBigInteger(numBits,rr);
rr=newRandom();
BigIntegerz=newBigInteger(100,10,rr);
//BigInteger(intbitLength,intcertainty,Randomrnd)
//构造一个随机产生的,正的,指定长度的,可能是素数的大整数,参数certainty指明要进行多少次素数测试
(1)运行程序,给出正确的程序运行结果,分析程序的功能。
(2)参考上面程序,编写程序验证大实数BigDecimal类,常常用在商业运算中,用来获取高精度数据
6、根据下面的要求,编辑编译程序,并对所编写的出进行测试
假定银行的一个存取款系统有两类客户,一类是现金用户,一类是信用卡用户。
银行对每个客户都要登记其姓名name,并为之分配一个唯一的账户号码id,现金用户还要记录其卡的类型(工资卡、借记卡、理财卡),而信用卡用户则根据其信用级别有一定的透支限额lineOfCredit(A级10000元、B级5000元、C级2000元、D级1000元)。
每种客户都可以实现存deposit、取withdraw、和查询余额getBalance,信用卡用户还可以查询透支情况findOverdraw。
对于现金用户,每次取款操作只能在账户实际额度balance内操作,允许现金用户改变自己的帐户类型。
(1)分析有哪些属性和方法可以作为两个子类的共同属性和方法,写出抽象类Account定义。
abstractclassAccount{
privateStringname;
publicStringid;
privatedoublebalance;
publicvoidsetBalance(doublebalance){
this.balance=balance;
publicdoublegetBalance(){
returnbalance;
publicAccount(Stringname,Stringid,doublebalance){
super();
this.name=name;
this.id=id;
publicAccount(Stringname,Stringid){
publicvoiddeposit(doubleamount){
this.balance+=amount;
abstractvoidwithdraw(doubleamount);
(2)分析CashAccount有那些新增的属性和方法,定义一个继承于Account的子类CashAccount。
publicclassCashAccountextendsAccount{
publicStringcashsort;
publicStringgetCashsort(){
returncashsort;
publicvoidsetCashsort(Stringcashsort){
this.cashsort=cashsort;
publicCashAccount(Stringname,Stringid,doublebalance,Stringcashsort){
super(name,id,balance);
publicvoidwithdraw(doubleamount){
if(this.getBalance()>
=amount){
this.setBalance(this.getBalance()-amount);
else{
System.out.println("
错误"
(3)分析CreditAccount有那些新增的属性和方法,然后定义一个继承于Account的子类CreditAccount,添加增加的属性和方法。
publicclassCreditAccountextendsAccount{
doublestaticoverdraw;
doubleoverdraw;
publicCreditAccount(Stringname,Stringid,doublebalance,
doublestaticoverdraw,doubleoverdraw){
this.staticoverdraw=staticoverdraw;
this.overdraw=overdraw;
publicvoidfindOverdraw(){
if(this.getBalance()<
0){
System.out.print("
透支"
overdraw=-(this.getBalance());
else{
未透支"
if(this.getBalance()+staticoverdraw>
(4)请按照要求编写一个程序Test,用你所定义的类完成下列业务操作。
A、用Account作为类型定义两个变量credit和debit,分别引用CreditAccount和CashAccount的对象,并完成存款500元的操作。
B、每个对象完成取款200元的操作后再次取款400元,请输出各自的余额。
C、可以通过credit查看引用对象的透支额吗,如果不能,怎样修改可以查看?
publicclassTest{
Accountcredit=newCreditAccount("
zqq"
"
20094070149"
0,500,0);
Accountdebit=newCashAccount("
zsq"
20094070101"
0,"
借记卡"
credit.deposit(500);
debit.deposit(500);
credit.withdraw(200);
debit.withdraw(200);
credit.withdraw(400);
debit.withdraw(400);
creditbalance"
+credit.getBalance());
cashbalance"
+debit.getBalance());
}}
编辑上面的程序,给出运行结果,并对程序进行分析,理解掌握类、抽象类和继承的概念与应用。
______________________________________________________________________________________________
7、定义一个Teacher类,该类提供教师的工号、姓名、职称信息,再定义一个课程类Course,描述了课程的编号、课程名称、理论课时和实验课