Java 的常用工具类

一、实验目的 :

(1) 了解Java 的预定义类;

(2) 学习使用Java 的常用类;

(3) 掌握方法覆盖的使用。

二、实验任务 :

在该实验中包含 3 个练习 , 分别是针对Java 中的 Math 类, 基本类型的包装类, 日期类Date 和 Calendar 以及动态数组 Vector 类, 通过这些练习仔细体会这些常用的Java 类的使用方法。

三、实验步骤 :

1. 练习 1 Math 类和基本类型的包装类

在这个练习里, 将练习使用 Math 类和基本类型的包装类 ,Math 类中包含有许多常用的数学方法如求绝对值abs() 、正弦值sin() 、两数当中的较大者 max(x, y), 而基本类型的包装类则允许将基本的数据类型包装成一个类, 并访问其中的方法。程序的运行结果如图 7-3所示。

(1) 请按程序清单1-10-1, 输入下面的 MathTest.java 源程序。

程序清单1-10-1 MathTest.java

// MathTest.java

import java.util.*;



public class MathTest {

public static void main(String args[]) {

Scanner scanner = new Scanner(System.in);

int intData;

double doubleData;

String intString, doubleString;

System.out.print("请输入整数x和实数y: ");

intData = scanner.nextInt();

// 以字符串方式输入实数

doubleString = scanner.next();

// 创建整数对象intObject

Integer intObject = new Integer(intData);

// 返回字符串所对应的数值

doubleData = Double.parseDouble(doubleString);

intData = intObject.intValue();

// 将整数对象的值以字符串形式输出

intString = intObject.toString();

System.out.println("你的输入是:" + intString + ", " + doubleData);

// 开始调用Math类的方法进行运算

int intData1 = Math.abs(intData);

System.out.println("abs(x)x的绝对值: " + Math.abs(intData));

System.out.println("ceil(y)y向上取整: " + Math.ceil(doubleData));

System.out.println("floor(y)y向下取整:" + Math.floor(doubleData));

System.out.println("exp(x)e的x次幂: " + Math.exp(intData));

System.out.println("log(x)x的自然对数:" + Math.log(intData1));

System.out.println("max(x,y)x和y中的较大者:" + Math.max(intData, doubleData));

System.out.println("min(x,y)x和y中的较小者:" + Math.min(intData, doubleData));

System.out.println("sin(x)x的正弦值:" + Math.sin(intData));

System.out.println("cos(x)x的余弦值:" + Math.cos(intData));

System.out.println("以x为半径的圆面积:" + Math.PI * intData * intData);

}

}

(2) 编辑Birthday.java 程序并保存, 然后在Eclipse 环境中编译运行它 ,观察程序运行结果。

思考

(1) 请问程序中Math类中的方法为什么可以直接用类名来访问?

(2) 请调用Math类的方法以产生一个随机数,然后求随机数的正弦值和余弦值。

2.练习2 日期类DateCalendar

在这个练习里用户将会学习使用Java中常用的操纵时间的类Date和Calendar以及控制日期输入输出格式的类DateFormat,程序会要求用户以规范的格式输入自己的生日日期,然后将使用Date类和Calendar类和Calendar类中的方法计算出用户的生日是星期几,用户的年龄以及出声的年份是否是闰年。

(1) 请按程序清单1-10-2 输入下面的Birthday.java源程序。

程序清单1-10-2 Birthday.javai

mport java.util.*; // Date,Calendar,Scanner

import java.text.*; // SimpleDateFormat



public class Birthday {

public static void main(String args[]) throws ParseException {

String birthday, dayOfWeek = " ";

Date date;

Calendar calendar;

Scanner scanner = new Scanner(System.in);

System.out.println("请输入你的生日日期:yyyy-MM-dd");

birthday = scanner.next();

// 创建一个日期格式对象

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

// 获得一个包含当前日期和时间的Calendar子类的实例

calendar = Calendar.getInstance();

int currentYear = calendar.get(Calendar.YEAR);

// 按输入的birthday产生一个Date对象

date = dateFormat.parse(birthday);

// 将date对象的值传递给calendar对象

calendar.setTime(date);

int days = calendar.get(Calendar.DAY_OF_WEEK);

switch (days) {

case 1:

dayOfWeek = "星期日";

break;

case 2:

dayOfWeek = "星期一";

break;

case 3:

dayOfWeek = "星期二";

break;

case 4:

dayOfWeek = "星期三";

break;

case 5:

dayOfWeek = "星期四";

break;

case 6:

dayOfWeek = "星期五";

break;

case 7:

dayOfWeek = "星期六";

break;

}

System.out.println("你的生日是:" + dayOfWeek);

int birthYear = calendar.get(Calendar.YEAR);

if (((birthYear % 4 == 0) && (birthYear % 100 != 0))

|| (birthYear % 400 == 0))

System.out.println(birthYear + "年: 是闰年");

else

System.out.println(birthYear + "年: 不是闰年");

int age = currentYear - birthYear;

System.out.println("你现在是: " + age + "岁");

}

}

(2) 编辑Birthday.java源程序并保存,然后在Eclipse 环境中编译运行它,观察程序运行结果。

思考

(1) 请问程序Brithday.java中的语句 :

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd);的作用是什么, 请查询 DateFormat 类中是否还有其他的日期格式。

(2) 程序中的 switch 语句用于判断星期几 , 现在请将该 switch 语句中的break 语句全部删除, 然后编译运行程序 , 观察会有什么结果 , 并说明原因。

(3) 在输入了正确的生日日期后, 程序能返回用户的年龄, 现在请修改程序, 以返回用户的生日日期与当前日期之间相距多少天。

(4) 请查询 Calendar 类的相关方法以显示出当前的精确日期和时间( 包括年、月、日、小时、分钟、秒 )。

3. 练习 3 动态数组 Vector

在这个练习里, 用户将练习使用Vector 类,Vector 类是一个动态数组, 能根据实际需要动态地扩充数组的大小 , 同时 Vector 类中还包含许多方法来操纵数组中的元素 , 程序中有一个Vector 数组, 里面包含有几个事先定义的城市名, 同时, 可以在该数组中增加几个新的城市名 , 并进行一些交互性的操作。在这一过程中 , 仔细体会 Vector 数组的用法。该程序的运行结果如图 7-5 所示。

(1) 请按程序清单1-10-3 输入下面的 CityVector.java 源程序。

程序清单1-10-3 CityVector.java

// CityVector.java

import java.util.*;



public class CityVector {

static String city[] = { "北京", "上海", "广州", "深圳" };



public CityVector() {

Vector vector = new Vector(6);

Scanner scanner = new Scanner(System.in);

String cityName;

int index;

for (int i = 0; i < city.length; i++) {

vector.add(city[i]);

}

;

// 显示出数组信息

displayVector(vector);

System.out.print("\n请输入数组索引号: ");

index = scanner.nextInt();

cityName = (String) vector.get(index);

System.out.println("数组[" + index + "]的元素值是: " + cityName);

System.out.print("\n请再输入3个你喜欢的城市: ");

for (int i = 0; i < 3; i++) {

cityName = scanner.next();

vector.add(cityName);

}

displayVector(vector);

System.out.print("\n请输入一个你想查询的城市名: ");

cityName = scanner.next();

if (vector.contains(cityName))

System.out.println(" 在数组中找到: " + cityName + " 下标是:"

+ vector.indexOf(cityName));

else

System.out.println("在数组中没有找到: " + cityName);

System.out.print("\n请输入一个你想删除的城市名: ");

cityName = scanner.next();

vector.remove(cityName);

System.out.println(cityName + " 已被删除");

displayVector(vector);

}



public void displayVector(Vector vector) {

System.out.println("\n数组大小: " + vector.size() + "\n数组容量: "

+ vector.capacity());

if (vector.isEmpty())

System.out.print("数组为空");

else {

System.out.print("数组包含: ");

Enumeration contents = vector.elements();

while (contents.hasMoreElements())

System.out.print(contents.nextElement() + " ");

}

System.out.println("\n");

}



public static void main(String args[]) {

CityVector application = new CityVector();

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值