第二次java作业(3-5)和实验(3-14)参考答案 - 图文

更新时间:2024-05-26 14:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

作业

第三章 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的时间:\ 计算Car007的时间:\

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

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

实例化一个对象的另外一种办法:Class.forName(str).newInstance();例如需要实例化一个Plane对象的话,则只要调用Class.forName(\便可。 访到classpath 路径下即可,请从下往上编译 目录结构 CalTime

--------|--------

| | | |

vehicle ComputTime.java |

--------- | | | |

all Palne.java /Car.java | |

Common.java

1. ComputTime.java 请确保输入正确,其中没有捕捉NumberFromatException import CalTime.vehicle.all.Common; import java.lang.*;

public class ComputeTime {

public static void main(String args[]) { System.out.println(\交通工具: \ System.out.println(\参数A: \

System.out.println(\参数B: \System.out.println(\参数C: \double A=Double.parseDouble(args[1]); double B=Double.parseDouble(args[2]); double C=Double.parseDouble(args[3]); double v,t; try {

Common d=(Common) Class.forName(\+args[0]).newInstance(); // CalTime.vehicle是对应的包名 v=d.runTimer(A,B,C); t=1000/v;

System.out.println(\平均速度: \ System.out.println(\运行时间:\小时\}

catch(Exception e) { System.out.println(\}

} }

2.Plane.java

package CalTime.vehicle;

import CalTime.vehicle.all.Common;

public class Plane implements Common {

public double runTimer(double a, double b, double c) {

return (a+ b + c); } }

3. Car.java

package CalTime.vehicle;

import CalTime.vehicle.all.Common;

public class Car implements Common { public double runTimer(double a, double b, double c)

{

return ( a*b/c ); } }

4.Common.java

package CalTime.vehicle.all;

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 test_S3_2 { public static void main(String[]args) { Student student = new Student(01,\李明\ System.out.println(student.getAge()); System.out.println(student.getPhone()); System.out.println(student.toString()); } }

class Student { public long id; public String name; public int age; public boolean sex; public String phone; public Student(long i,String n,int a,boolean s,String p) { this.id = i; this.name = n; this.age = a; this.sex = s; this.phone = p; } public int getAge() { return this.age; } public boolean getSex() { return this.sex;

}

}

public String getPhone() { return this.phone; }

public String toString() { return this.name+ \ }

3、利用接口编写三角形、矩形的面积和周长的程序。 import java.awt.image.renderable.RenderableImageOp; public class S3_3 { public static void main(String[] args) { Rectangle rectangle = new Rectangle(10, 8);

System.out.println(\矩形面积:\

System.out.println(\矩形周长:\Triangle triangle = new Triangle(3, 4, 5);

System.out.println(\三角形面积:\ System.out.println(\三角形周长:\ } }

class Rectangle implements Cal { double longth; double width; public Rectangle(double longth, double width) { this.longth = longth; this.width = width; } public double calArea() { return this.longth * this.width; } @Override public double calPerimeter() { return (this.longth + this.width) * 2; } }

class Triangle implements Cal { double a; double b; double c; public Triangle(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public double calArea() { double p = (a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } public double calPerimeter() { return (a+b+c); } }

4、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如\我ABC\,应该截为\我AB\,输入\我ABC汉DEF\,6,应该输出为\我ABC\而不是\我ABC+汉的半个\。 public class Test3 {

public static void main(String[] args) {

String srcStr1 = \我ABC\

String srcStr2 = \我ABC汉DEF\ splitString(srcStr1, 4); splitString(srcStr2, 6); }

public static void splitString(String src, int len) {

int byteNum = 0; if (null == src) {

System.out.println(\ return; }

byteNum = src.length();

byte bt[] = src.getBytes(); // 将String转换成byte字节数组

if (len > byteNum) {

len = byteNum; }

// 判断是否出现了截半,截半的话字节对于的ASC码是小于0的值 if (bt[len] < 0)

{

String subStrx = new String(bt, 0, --len); System.out.println(\ }

else {

String subStrx = new String(bt, 0, len); System.out.println(\ } } }

第四章 Java异常处理 1、 写程序运行结果: public class A {

static int some() { try {

System.out.println(\ return 1; }

finally {

System.out.println(\ } }

public static void main(String arg[]) { System.out.println(some()); } } try finally 1

2、先从键盘输入一个十六进制数,再将其转化为十进制数,然后输出。若输入的不是一个有效的十六进制数,则抛出异常。 import java.util.InputMismatchException; import java.util.Scanner;

public class S4_2

{

public static void main(String[] args) { System.out.println(\请输入一个十六进制的数:\ Scanner cin = new Scanner(System.in); try{ while(cin.hasNext()) { int val = cin.nextInt(16);

System.out.print(\转化为十进制为:\ System.out.println(val); System.out.println(\请输入一个十六进制的数:\ } }catch(InputMismatchException e){ e.printStackTrace(); } } }

3、先编写一个方法,它将格式为“yyyy/mm/dd”形式的日期字符串转化为日期对象。若日期字符串不符合以上规定,则抛出异常。再在main方法中对正常和异常输入的日期字符串分别进行验证,并输出转换后的日期对象。 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class S4_3 { public static void main(String[] args) throws ParseException { System.out.println(\/9/1 :\ Scanner scanner = new Scanner(System.in); String temp = scanner.nextLine(); try { System.out.println(getDate(temp)); } catch (ParseException e) { e.printStackTrace(); throw e; } } public static Date getDate(String date) throws ParseException{ DateFormat format = new SimpleDateFormat(\

}

}

try { return new Date(format.parse(date).getTime()); } catch (ParseException e) { e.printStackTrace(); throw e; }

第五章 Java常见类

1、设有一个由10个英文单词构成的字符串数组,要求: (1) 统计以字母“w”开头的单词数;

(2) 统计单词中含“or”字符串的单词数; (3) 统计长度为3的单词数。

public class S5_1 { public static void main(String[] args) { String string[] = {\ int countW = 0; int countOr = 0; int countLentghEqual3 = 0; for (int i = 0; i < string.length; i++) { if (string[i].substring(0, 1).equals(\ { countW++; } if (string[i].indexOf(\ { countOr++; } if (string[i].length() == 3) { countLentghEqual3++; } } System.out.println(\以字母w开头的单词数:\ System.out.println(\单词中含'or'字符串的单词数:\ System.out.println(\长度为3的单词数:\ } }

2、利用随机函数产生20个10~90之间的不重复整数, 将这些数拼接在一个字符串中, 用逗号隔开(每产生一个新数, 要保证在该串中不存在)。然后将字符串中的整数分离存放到一个数组中,将数组的内容按由小到大的顺序输出。

import javax.naming.ldap.SortControl; public class S5_2 { public static void main(String[] args) { StringBuffer stringBuffer = new StringBuffer(); String string; int a[] = new int[20]; stringBuffer = generateInt(); string = stringBuffer.toString(); System.out.println(string); a = intoArray(string); a = sort(a); for (int i = 0; i < 20; i++) { System.out.print(a[i]+\ } } static StringBuffer generateInt() { int integer; StringBuffer string = new StringBuffer(); String tempString; for (int i = 0; i < 20; i++) { integer = (int)(Math.random()*90); if (integer < 10) { i--; } else if (string.indexOf(Integer.toString(integer)) != -1) { i--; } else { tempString = Integer.toString(integer); string.append(tempString+\ }

}

} return string; }

static int[] intoArray(String string) { int a[] = new int[20]; String tempString; for (int i = 0; i < a.length; i++) { tempString = string.substring(3*i, 3*i+2); a[i] = Integer.parseInt(tempString); } return a; }

static int[] sort(int a[]) { int tempInt; for (int i = 0; i < a.length-1; i++) { for (int j = i+1; j < a.length; j++) { if (a[i] > a[j]) { tempInt = a[i]; a[i] = a[j]; a[j] = tempInt; } } } return a; }

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

import java.util.Scanner; public class S5_3 { public static void main(String[] args) { String person[][] = new String[3][2]; String searchName; String phone; Scanner myInput = new Scanner(System.in); person = input(person);

本文来源:https://www.bwwdw.com/article/lor7.html

Top