java作业答案.doc_第1页
java作业答案.doc_第2页
java作业答案.doc_第3页
java作业答案.doc_第4页
java作业答案.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章 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的时间:java ComputeTime Plane 20 30 40 计算Car007的时间:java ComputeTime Car007 23 34 45 如果第3种交通工具为Ship, 则只需要编写Ship.java,运行时输入:java ComputeTime Ship 22 33 44提示:充分利用接口的概念,接口对象充当参数。实例化一个对象的另外一种办法:Class.forName(str).newInstance();例如需要实例化一个Plane对象的话,则只要调用Class.forName(Plane).newInstance()便可ComputerTime.java源程序:import pkg1.pkg2.*;import java.lang.*;public class ComputerTime public static void main(String args) System.out.println(交通工具: +args0);System.out.println( 参数A: +args1);System.out.println( 参数B: +args2);System.out.println( 参数C: +args3); double A=Double.parseDouble(args1); double B=Double.parseDouble(args2); double C=Double.parseDouble(args3);double v,t;try Common d=(Common) Class.forName(pkg1.+args0).newInstance(); v=d.runtimer(A,B,C);t=1000/v;System.out.println(平均速度: +v+ km/h); System.out.println(运行时间:+t+ 小时); catch(Exception e) System.out.println(class not found);包pkg1中Car007.java的源程序:package pkg1;import pkg1.pkg2.*;public class Car007 implements Commonpublic double runtimer(double A,double B,double C) System.out.println(runtime=+(A*B/C); return A*B/C; 包pkg1中Plane.java的源程序:package pkg1;import pkg1.pkg2.*;public class Plane implements Commonpublic double runtimer(double A,double B,double C)return A+B+C; 包pkg2中Common.java的源程序:package pkg1.pkg2;public interface Common double runtimer(double A,double B,double C); 2 编写一个学生类 Student ,要求: (1) 学生类 Student 属性有: id : long型,代表学号 name : String类对象,代表姓名 age : int型,代表年龄 sex : boolen型,代表性别(其中:true表示男,false表示女) phone : String类对象,代表联系电话 (2) 学生类 Student的方法有: Student(long i , String n , int a , boolean s , long p) : 有参构造函数,形参表中的参数分别初始化学号、姓名、年龄、性别和联系电话。 int getAge() ( ) : 获取年龄作为方法的返回值。 boolean getSex( ) ( ) : 获取性别作为方法的返回值。 long getPhone ( ) : 获取联系电话作为方法的返回值。 public String toString( ) : 以 姓名:联系电话 的形式作为方法的返回值。public class Student private long id; private String name; private int age; private boolean sex; private String phone; public Student() public Student(long id, String name, int age, boolean sex, String phone) this.id = id; = name; this.age = age; this.sex = sex; this.phone = phone; public long getId() return id;public String getName() return name;public int getAge() return age;public boolean getSex() return sex;public String getPhone() return phone;public String toString() return name + : + phone;public static void main(String args) 3、利用接口编写三角形、矩形的面积和周长的程序。Point.classpublic class Point int x;int y;Point()Point(int a,int b)x=a;y=b; public static double getInstance(Point p1, Point p2) return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2); Triangle.classpublic class Triangle Point n1,n2,n3;boolean isTriangle;public Triangle(Point n1,Point n2,Point n3)this.n1=n1;this.n2=n2;this.n3=n3;double sideA=Point.getInstance(n1,n2);double sideB=Point.getInstance(n2,n3);double sideC=Point.getInstance(n1,n3);if(sideA+sideBsideC&sideB+sideCsideA)isTriangle=true;elseisTriangle=false;public void getPerimeter()if(isTriangle)double sideA=Point.getInstance(n1,n2);double sideB=Point.getInstance(n2,n3);double sideC=Point.getInstance(n1,n3);System.out.println(三角形的周长为+(sideA+sideB+sideC);elseSystem.out.println(不能构成三角形!);public void getArea()if(isTriangle)double sideA=Point.getInstance(n1,n2);double sideB=Point.getInstance(n2,n3);double sideC=Point.getInstance(n1,n3);double p=(sideA+sideB+sideC)/2.0;System.out.println(三角形的面积为+ Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC);elseSystem.out.println(不能构成三角形!);Test.classpublic class Test public static void main(String args) Point n1=new Point(3,0);Point n2 =new Point(0,4);Point n3=new Point(0,0);Triangle sanjiao=new Triangle(n1,n2,n3);sanjiao.getPerimeter();sanjiao.getArea(); 4 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如我ABC4,应该截为我AB,输入我ABC汉DEF,6,应该输出为我ABC而不是我ABC+汉的半个。publicstaticStringsubstring(Stringstr,inttoCount,Stringmore)intreInt=0;StringreStr=;if(str=null)return;chartempChar=str.toCharArray();for(intkk=0;(kkreInt);kk+)Strings1=str.valueOf(tempCharkk);byteb=s1.getBytes();reInt+=b.length;reStr+=tempCharkk;if(toCount=reInt|(toCount=reInt-1)reStr+=more;returnreStr; 第四章 Java异常处理3. 写程序运行结果:public class A static int some() try System.out.println(try); return 1; finally System.out.println(finally); public static void main(String arg) System.out.println(some(); 输出结果:try Finally 14. 编程题:先从键盘输入一个十六进制数,再将其转化为十进制数,然后输出。若输入的不是一个有效的十六进制数,则抛出异常。package testexchange;import java.util.Scanner; class Exchange String s; private int y; Exchange() Exchange(String s)this.s=s; int getY()return y; void setY(int y)this.y=y; void Change16To10() int y=0; int i,k; for(i=0;is.length();i+) k=Change(s.charAt(i); y+=k*Math.pow(16,s.length()-(i+1); System.out.println(y); System.out.println(成功转换); int Change(char h) int x; switch(h) case 0: x=0; break; case 1: x=1; break; case 2: x=2; break; case 3: x=3; break; case 4: x=4; break; case 5: x=5; break; case 6: x=6; break; case 7: x=7; break; case 8: x=8; break; case 9: x=9; break; case a: x=10; break; case b: x=11; break; case c: x=12; break; case d: x=13; break; case e: x=14; break; case f: x=15; break; default: throw new MyException(); return x; class MyException extends RuntimeException public MyException() public MyException(String msg) super(msg); public void printcount() System.out.println(16 进制数输入不正确!); public class TestExchange public static void main(String args) System.out.println(请输入一个 16 进制数:); Scanner S=new Scanner(System.in); String s=S.next(); Exchange E=new Exchange(s); try E.Change16To10(); catch(MyException e) e.printcount(); 5. 编程题:先编写一个方法,它将格式为“yyyy/mm/dd”形式的日期字符串转化为日期对象。若日期字符串不符合以上规定,则抛出异常。再在main方法中对正常和异常输入的日期字符串分别进行验证,并输出转换后的日期对象。import java.util.Date;public class Test1 public static void main(String args) System.out.println(当前时刻为:); System.out.println(new Date().toString(); System.out.println(转化显示格式后:); System.out.println(convertCommonDateStr(new Date().toString();public static String convertCommonDateStr(String commonDateStr) StringBuffer result=new StringBuffer(); String arrStr=commonDateStr.split( ); result.append(arrStr5).append(-);/年- result.append(convertMonthStr(arrStr1,true).append(-);/月- result.append(arrStr2).append( );/日 result.append(arrStr3);/时:分:秒 return result.toString(); public static String convertMonthStr(String monthStr,boolean isWithZero) String monthResult=; if(Jan.equals(monthStr) monthResult=01; else if(Feb.equals(monthStr) monthResult=02; else if(Mar.equals(monthStr) monthResult=03; else if(Apr.equals(monthStr) monthResult=04; else if(May.equals(monthStr) monthResult=05; else if(Jun.equals(monthStr) monthResult=06; else if(Jul.equals(monthStr) monthResult=07; else if(Aug.equals(monthStr) monthResult=08; else if(Sep.equals(monthStr) monthResult=09; else if(Oct.equals(monthStr) monthResult=10; else if(Nov.equals(monthStr) monthResult=11; else if(Dec.equals(monthStr) monthResult=12; if(!isWithZero) if(monthResult.startsWith(0) monthResult=monthResult.substring(1,2); return monthResult; 第五章 Java常见类设有一个由10个英文单词构成的字符串数组,要求:(1) 统计以字母“w”开头的单词数;(2) 统计单词中含“or”字符串的单词数;(3) 统计长度为3的单词数。import java.util.Scanner; public class Nt public static void main(String args) Scanner input=new Scanner(System.in); String Str=new String10; int a,countw=0,countor=0,count3=0; for(a=0;a10;a+) System.out.println(请输入第+(a+1)+个单词;); Stra=input.next(); for(a=0;a10;a+) if(Stra.substring(0,1).equals(w)|Stra.substring(0,1).equals(W) countw+=1; if(Stra.indexOf(or)!=-1) countor+=1; if(Stra.length()=3) count3+=1; System.out.println(以字母w开头的单词数+countw); System.out.println(单词中含“or”字符串的单词数+countor); System.out.println(长度为3的单词数+count3); 4. 编程题:利用随机函数产生20个1090之间的不重复整数, 将这些数拼接在一个字符串中, 用逗号隔开(每产生一个新数, 要保证在该串中不存在)。然后将字符串中的整数分离存放到一个数组中,将数组的内容按由小到大的顺序输出。 import java.lang.Math;public class leibi public static void main(String args) int b=new int20; for(int i=0;ib.length;i+) bi=(int) (Math.random()*100); for(int j=0;ji+1;j+) if(i!=j)&(bi=bj) bi=(int) (Math.random()*100); for(int i=0;ib.length;i+)System.out.print(bi+ , );System.out.print(n );for(int i=0;ib.length-1;i+) for (int j=0;jbj+1) int temp=bj; bj=bj+1; bj+1=temp; for(int i=0;ib.length;i+)System.out.print(bi+ );5. 编程题:先任意输入不超过10个人的姓名和电话到电话簿,然后从电话簿中查询指定人的电话。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Tongxunlu static BufferedReader in = new BufferedReader(new InputStreamReader(System.in);static String name=, address=, phone=, sex=, yn=;static Read c = new Read10;static int num = 0;public static void main(String args) while(true)System.out.println(*通讯录*);System.out.println(1.添加联系人);System.out.println(2.修改联系人);System.out.println(3.删除联系人);System.out.println(4.查询联系人);System.out.println(5.退出);trySystem.out.println(请你按键选择!);int s = new Scanner(System.in).nextInt();switch(s)case 1:caseone();break;case 2:casetwo();break;case 3:casethree();break;case 4:casefour();break;case 5:System.exit(0);default:System.out.println(输入错误,请从新输入);catch(Exception e)System.out.println(你必须输入数字类型!); public static void caseone() throws IOExceptionSystem.out.println(请输入名字);name = in.readLine();System.out.println(请输入电话);phone = in.readLine();while(true)System.out.println(请输入性别);sex = in.readLine();if(sex.equals(男)|sex.equals(女)break;System.out.println(性别输入错误,重新输入);System.out.println(请输入地址);address = in.readLine();System.out.println(输入完成,是否添加(Y/N);yn = in.readLine();if(yn.equals(Y) | yn.equals(y)cnum = new Read(name,phone,sex,address);num+;System.out.println(添加成功!);elseSystem.out.println(添加失

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论