java作业第二次.docx

上传人:b****9 文档编号:25414335 上传时间:2023-06-08 格式:DOCX 页数:28 大小:191.84KB
下载 相关 举报
java作业第二次.docx_第1页
第1页 / 共28页
java作业第二次.docx_第2页
第2页 / 共28页
java作业第二次.docx_第3页
第3页 / 共28页
java作业第二次.docx_第4页
第4页 / 共28页
java作业第二次.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

java作业第二次.docx

《java作业第二次.docx》由会员分享,可在线阅读,更多相关《java作业第二次.docx(28页珍藏版)》请在冰豆网上搜索。

java作业第二次.docx

java作业第二次

第三章Java面向对象

1、为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。

现有两种工具:

Car007和Plane,其中Car007的速度运算公式为:

A*B/C,Plane的速度运算公式为:

A+B+C。

需要编写三类:

ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。

其运行过程如下,从命令行输入ComputeTime的四个参数,第一个是交通工具的类型,第二、三、四个参数分别时整数A、B、C,举例如下:

计算Plane的时间:

"javaComputeTimePlane203040"

计算Car007的时间:

"javaComputeTimeCar007233445"

如果第3种交通工具为Ship,则只需要编写Ship.java,运行时输入:

"javaComputeTimeShip223344"

提示:

充分利用接口的概念,接口对象充当参数。

实例化一个对象的另外一种办法:

Class.forName(str).newInstance();例如需要实例化一个Plane对象的话,则只要调用Class.forName("Plane").newInstance()便可。

Commond=(Common)Class.forName("ComputeTime."+args[0]).newInstance();//实例化对象是包名加对象名

packageComputeTime;

publicinterfaceCommon{

doublerunTimer(doublea,doubleb,doublec);

}

packageComputeTime;

publicclassCarimplementsCommon{

@Override

publicdoublerunTimer(doublea,doubleb,doublec){

return(a+b+c);

}

}

packageComputeTime;

publicclassPlaneimplementsCommon{

@Override

publicdoublerunTimer(doublea,doubleb,doublec){

return(a+b+c);

}

}

packageComputeTime;

publicclassShipimplementsCommon{

@Override

publicdoublerunTimer(doublea,doubleb,doublec){

return(a+b-c);

}

}packageComputeTime;

publicclassComputeTime{

publicstaticvoidmain(String[]args){

System.out.println("交通工具:

"+args[0]);

System.out.println("参数A:

"+args[1]);

System.out.println("参数B:

"+args[2]);

System.out.println("参数C:

"+args[3]);

doubleA=Double.parseDouble(args[1]);

doubleB=Double.parseDouble(args[2]);

doubleC=Double.parseDouble(args[3]);

doublev,t;

try{

Commond=(Common)Class.forName("ComputeTime."+args[0]).newInstance();

v=d.runTimer(A,B,C);

t=1000/v;

System.out.println("平均速度:

"+v+"km/h");

System.out.println("运行时间:

"+t+"小时");

}catch(ClassNotFoundException|InstantiationException|IllegalAccessExceptione){

System.out.println("classnotfound");

}

}

}

2、编写一个学生类Student,要求:

(1)学生类Student属性有:

id:

long型,代表学号name:

String类对象,代表姓名age:

int型,代表年龄sex:

boolen型,代表性别(其中:

true表示男,false表示女)phone:

String类对象,代表联系电话

(2)学生类Student的方法有:

Student(longi,Stringn,inta,booleans,Stringp):

有参构造函数,形参表中的参数分别初始化学号、姓名、年龄、性别和联系电话。

intgetAge()():

获取年龄作为方法的返回值。

booleangetSex()():

获取性别作为方法的返回值。

StringgetPhone():

获取联系电话作为方法的返回值。

publicStringtoString():

以姓名:

联系电话的形式作为方法的返回值。

packagestudent;

publicclassStudent{

privatelongid;

privateStringname;

privateintage;

booleansex;

privateStringphone;

publicStudent(){}

publicStudent(longi,Stringn,inta,booleans,Stringp){

id=i;

name=n;

age=a;

sex=s;

phone=p;

}

publiclonggetId(){

returnid;

}

publicStringgetName(){

returnname;

}

publicStringgetPhone(){

returnphone;

}

publicintgetAge(){

returnage;

}

publicbooleangetSex(){

returnsex;

}

publicStringtoString(){

return"姓名:

"+name+",ID:

"+id+",年龄:

"+age+",男?

"+sex+",Phone:

"+phone;

}

publicstaticvoidmain(String[]args){

Studentstu=newStudent(18,"张三",19,true,"12456");

System.err.println(stu.toString());

}

}

run:

姓名:

张三,ID:

18,年龄:

19,男?

true,Phone:

12456

3、利用接口编写三角形、矩形的面积和周长的程序。

packagehomework3_4;

publicinterfaceCommon{

publicdoublearea();

publicdoublelength();

}

packagehomework3_4;

publicclassRentangleimplementsCommon{

doubles1;

doubles2;

publicRentangle(){}

publicRentangle(doublea,doubleb){

s1=a;

s2=b;

}

@Override

publicdoublearea(){

returns1*s2;

}

@Override

publicdoublelength(){

return2*s1+2*s2;

}

@Override

publicStringtoString(){

return"面积为:

"+this.area()+",周长为:

"+this.length();

}

}

packagehomework3_4;

publicclassTriangleimplementsCommon{

privatedoubles1;

privatedoubles2;

privatedoubles3;

publicTriangle(){}

publicTriangle(doublea,doubleb,doublec){

this.s1=a;

this.s2=b;

this.s3=c;

}

@Override

publicdoublearea(){

doublep=(s1+s2+s3)/2;

returnMath.sqrt(p*(p-s1)*(p-s2)*(p-s3));

}

@Override

publicdoublelength(){

returns1+s2+s3;

}

@Override

publicStringtoString(){

return"面积为:

"+this.area()+",周长为:

"+this.length();

}

}

packagehomework3_4;

publicclassHomeWork3_4{

publicstaticvoidmain(String[]args){

Rentangler=newRentangle(4,6);

Trianglet=newTriangle(5,12,13);

System.out.println(r.toString());

System.out.println(t.toString());

}

}

run:

面积为:

24.0,周长为:

20.0

面积为:

30.0,周长为:

30.0

4、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。

但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。

 

packagehomework3_5;

publicclassHomeWork3_5{

publicstaticStringgetSubString(Stringstr,intlen)throwsException{

if(str==null||str.length()<1){

returnnull;

}

if(len<1){

returnnull;

}

StringBuilders=newStringBuilder();

intall=0;

for(inti=0;i

Stringtmp=str.substring(i,i+1);

s.append(tmp);

byte[]tmpB=tmp.getBytes("GBK");

all+=tmpB.length;

if(all>=len){

break;

}

}

returns.toString();

}

publicstaticvoidmain(String[]args)throwsException{

System.out.println(""+getSubString("我ABC汉DEF",6));

}

}

run:

我ABC汉

第五章Java常见类

1、设有一个由10个英文单-词构成的字符串数组,要求:

(1)统计以字母“w”开头的单词数;

(2)统计单词中含“or”字符串的单词数;

(3)统计长度为3的单词数。

packagehomework5_1;

importjava.util.Scanner;

publicclassHomeWork5_1{

publicstaticvoidmain(Stringargs[]){

Scannerread=newScanner(System.in);

//Strings=read.next();

Strings="wwwwwwwwwordeiuhjfeiorwerorwowrfoeofiooerhj";

String[]str;

str=s.split("");

for(inti=0;i

System.out.println(str[i]);

}

intcountw=0;

booleanw=false;

intcountor=0;

booleanor=false;

intcount3=0;

booleanthree=false;

for(inti=0;i<10;i++){

w=false;

or=false;

three=false;

for(intj=0;j

if(str[i].charAt(0)=='w'&&!

w){

countw++;

w=true;

}

if(j<(str[i].length()-1)&&!

or){

if(str[i].charAt(j)=='o'&&str[i].charAt(j+1)=='r'){

countor++;

or=true;

}

}

if(str[i].length()==3&&!

three){

count3++;

three=true;

}

}

}

System.out.println("单词以w开头的共:

"+countw+"个,包含or单词共:

"+countor+"个,长度为3的单词共:

"+count3+"个");

}

}

run:

wwwww

www

wor

deiuh

jfeior

wer

orw

owr

foeo

fiooerhj

单词以w开头的共:

4个,包含or单词共:

3个,长度为3的单词共:

5个

2、利用随机函数产生20个10~90之间的不重复整数,将这些数拼接在一个字符串中,用逗号隔开(每产生一个新数,要保证在该串中不存在)。

然后将字符串中的整数分离存放到一个数组中,将数组的内容按由小到大的顺序输出。

packagehomework5_2;

importjava.util.Arrays;

importjava.util.Random;

publicclassHomeWork5_2{

publicstaticvoidmain(String[]args){

Randomr=newRandom();

inta[]=newint[20];

for(inti=0;i<20;i++)

{

a[i]=r.nextInt(80)+10;

for(intj=0;j<=i;j++)

if(a[i]==a[j]&&i!

=j)

{

i--;

break;

}

}

Strings=newString();

for(inti=0;i<20;i++)

{

if(i==19){

s+=a[i];

break;

}

s=s+a[i]+",";

}

System.out.println(s);

String[]b;

b=s.split(",");

int[]c=newint[b.length];

for(inti=0;i

c[i]=Integer.parseInt(b[i]);

Arrays.sort(c);

for(inti=0;i

{

if(i%5==0&&i!

=0)

System.out.println();

System.out.print("c["+(i+1)+"]="+c[i]+"");

}

 

//TODOcodeapplicationlogichere

}

}

run:

71,23,15,27,83,31,76,63,29,20,38,85,58,41,80,68,54,61,35,40

c[1]=15c[2]=20c[3]=23c[4]=27c[5]=29

c[6]=31c[7]=35c[8]=38c[9]=40c[10]=41

c[11]=54c[12]=58c[13]=61c[14]=63c[15]=68

c[16]=71c[17]=76c[18]=80c[19]=83c[20]=85

3、先任意输入不超过10个人的姓名和电话到电话簿,然后从电话簿中查询指定人的电话。

packagehomework5_3;

publicclassPhoneBook{

privateStringname;

privateStringphone;

publicPhoneBook(){

}

publicPhoneBook(StringName,StringPhone){

this.name=Name;

this.phone=Phone;

}

publicStringgetName(){

returnname;

}

publicStringgetPhone(){

returnphone;

}

}

packagehomework5_3;

importjava.io.*;

importjava.util.Scanner;

publicclassHomeWork5_3{

publicstaticvoidmain(String[]args)throwsFileNotFoundException,IOException{

Stringname;

Stringphone=null;

Stringreadfile;

String[]s;

intn=10;

PhoneBookpb[]=newPhoneBook[10];

InputStreamis=HomeWork5_3.class.getResourceAsStream("test5_3.txt");

InputStreamReaderisr=newInputStreamReader(is,"UTF-8");

BufferedReaderbfr=newBufferedReader(isr);

Scannerread=newScanner(System.in);

for(inti=0;i

readfile=bfr.readLine();

s=readfile.split("");

name=s[0];

phone=s[1];

pb[i]=newPhoneBook(name,phone);

}

System.out.println("录入信息:

");

for(inti=0;i

name=pb[i].getName();

phone=pb[i].getPhone();

System.out.println("姓名:

"+name+",电话为:

"+phone);

}

System.out.print("请输入要查询人姓名:

");

name=read.next();

booleanflag=false;

for(inti=0;i

if(pb[i].getName().equals(name)){

flag=true;

phone=pb[i].getPhone();

name=pb[i].getName();

break;

}

}

if(flag){

System.out.println("要查询人姓名:

"+name+",电话为:

"+phone);

}

}

}

run:

录入信息:

姓名:

张三,电话为:

123456

姓名:

离散,电话为:

12324345

姓名:

王五,电话为:

1234567

姓名:

李六,电话为:

90876

姓名:

赵一,电话为:

5674839

姓名:

郭八,电话为:

08976

姓名:

谢二,电话为:

3094856

姓名:

邓七,电话为:

02934857

姓名:

袁九,电话为:

578240

姓名:

明骚,电话为:

293485

请输入要查询人姓名:

袁九

要查询人姓名:

袁九,电话为:

578240

4、编写一个日历,按照格式yyyy-MM-dd输入一个指定日期,可以显示当月的日历,该指定日期前面加*以示是你输入的日期。

/*

*Tochangethistemplate,chooseTools|Templates

*andopenthetemplateintheeditor.

*/

packagehomework5_4;

importjava.util.Calendar;

publicclassHomeWork5_4{

publicstaticvoidmain(String[]args){

//Scannerread=newScanner(System.in);

//Stringstr=read.nextLine();

Stringstr="2000-2-25";

intyear;

intmonth;

intDay;

String[]s;

s=str.split("-");

year=Integer.parseInt(s[0]);

month=Integer.parseInt(s[1]);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1