实验9 常用类

更新时间:2024-05-09 23:20:02 阅读量: 综合文库 文档下载

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

实验9 常用类

一、实验目的

1.掌握String类的基本构造方法和常用方法的使用;

2.熟悉StringBuffer类的追加、插入、查找、替换、删除等操作; 3.熟悉Math类常量及常用方法的调用;

4.熟悉包装类的功能、重要属性、主要构造器和常用方法; 5.熟悉Date类的主要构造方法和常用方法,明白其不足之处;

6.熟悉GregorianCalendar类的主要构造方法、常用方法,能够正确地创建日历对象、输出日期对象对应的分量及计算两个日期的间隔;

7.熟悉SimpleDateFormat类的主要构造方法、常用方法,掌握格式化输出日期的方法与步骤; 8.熟悉API文档的使用,能够查阅包中类、接口、枚举、异常的相关信息; 9.了解StringTokenizer类的一般使用。

二、 实验内容与步骤

1.运行下列程序,并回答问题:

//字符串的比较

public class StringCompare { }

public static void main(String args[]) { }

String s1 = \; String s2 = \;

String s3 = new String(\); String s4 = new String(\);

System.out.println(\ + (s1 == s2)); System.out.println(\ + (s1 == s3)); System.out.println(\ + (s3 == s4));

System.out.println(\ + s1.equals(s2)); System.out.println(\ + s1.equals(s3)); System.out.println(\ + s3.equals(s4)); System.out.println(\ + s1.compareTo(s3));

问题:

(1) 对于String对象来说,“==”运算符与equals( )方法的功能有什么不同? (2) s1和s2是否指向同一对象?为什么? (3) s3和s4是否指向同一对象?为什么? (4) s1==s3是否成立?为什么? (5) s1、s2、s3、s4的内容是否相同?

(5) compareTo( )方法的功能是什么?当比较结果分别为 负数、正数、0 时,代表什么含义?

2.根据程序注释,将所缺代码补充完整,然后运行程序:

//String类的使用

public class StringTest { }

public static void main(String args[]) { }

// 创建一个以\为参数的String对象 String str = ______________________;

System.out.println(\字符串的长度: \ + ______________); // 输出字符串的长度 System.out.println(\字符串的首字符: \ + ___________);// 输出字符串的首字符 // 输出字符串的最后一个字符

System.out.println(\字符串的最后一个字符: \ + str.charAt(str.length() - 1)); // 输出字符'@'的索引号(即下标)

System.out.println(\字符\\'@\\'的索引号(即下标): \ + _______________); // 输出最后一个点号(.)的索引号(即下标)

System.out.println(\最后一个点号(.)的索引号(即下标): \ + str.lastIndexOf('.')); // 输出该邮箱的用户名(即第一个单词)

System.out.println(\该邮箱的用户名(即第一个单词): \

+ str.substring(0, str.indexOf('@')));

// 输出该邮箱的顶级域名(即最后一个单词)

System.out.println(\该邮箱的顶级域名(即最后一个单词): \ + __________________); // 字符串全部以大写方式输出

System.out.println(\字符串全部以大写方式输出为: \ + ____________________); // 字符串全部以小写方式输出

System.out.println(\字符串全部以小写方式输出为: \ + str.toLowerCase());

(小技巧:如果某一行的内容不会填写,可用//将该行内容注释掉,从面不影响整个程序的运行)

3.根据程序注释,将所缺代码补充完整,再运行程序::

//StringBuffer的增加、删除和修改 public class StringBufferTest {

public static void main(String args[]) {

}

}

char ch[]={'2','0','0','8','年'};

// 创建一个以\北京奥运会开幕时间:\为参数的StringBuffer对象 StringBuffer sb=________________;

______________; // 在sb尾部追加\月8日晚8点\字符串 sb.insert(_____,______);

int n=sb.indexOf(\北京\);

sb.replace(n,_______,\第29届\); // 将字符串中\北京\替换为\第29届\ System.out.println(\替换后,得到的字符串内容为: \+sb.toString());

System.out.println(\字符串的长度为: \+_____________);// 输出字符串的长度 sb.delete(______,18); // 删除字符串中从第6个字符开始到第18个字符为止的内容 System.out.println(\删除字符串后,得到的字符串内容为: \+sb.toString());

// 在sb头部插入字符数组ch的内容

System.out.println(\字符串内容为: \+sb.toString());

4. 运行下列程序,从中体会Math类中静态变量、静态方法的用法:

//Math类的使用

public class MathTest { }

public static void main(String[] args) { }

System.out.println(Math.E); System.out.println(Math.PI); System.out.println(Math.exp(2)); System.out.println(Math.random()); System.out.println(Math.sqrt(10.0)); System.out.println(Math.pow(2, 3)); System.out.println(Math.round(99.4)); System.out.println(Math.abs(-8.88));

5.(提高题)编写一个程序,从编号为1-50的学生中随机产生一等奖1名、二等奖2名、三等奖3名,任何一个学生不能重复中奖,抽奖顺序是:先抽三等奖,再抽二等奖,最后抽一等奖。

6.编写Calculator.java程序,实现功能:从命令行输入两个操作数和运算符,参数格式为:操作数1 运算符 操作数2,其中:两个操作数为double类型,运算符为:+、-、*、/中的一个,程序输出运算结果。

7.分析、填充、运行下列程序,并回答相关问题:

//Date类的使用

import java.util.Date; public class DateTest {

public static void main(String[] args){

}

}

________________________; // 创建一个日期对象now,以记录系统当前时间 System.out.println(\当前日期: \+________);// 输出now对象的内容

Date newDate=new Date(5000000); // 距离GMT 1970.1.1 0:0:0的间隔为5000秒 System.out.println(\新的日期: \+newDate);

System.out.println(\当前日期早于新日期: \+now.before(newDate)); System.out.println(\当前日期晚于新日期: \+now.after(newDate));

System.out.println(\当前时间距离GMT 1970.1.1 00:00:00的毫秒数: \+_______);

问题:

(1)Date类中的时间间隔是以什么为单位来计算的? (2)Date类的getTime()方法的功能是什么? (3)解释程序中 新日期newDate 的输出结果。

8.利用GregorianCalendar的get()方法输出系统的当前时间,输出格式:

9.分析、运行下列程序,从中体会格式化输出日期的用法,并回答相关问题:

//SimpleDateFormatTest类的使用 import java.util.*; import java.text.*;

public class SimpleDateFormatTest {

public static void main(String[] args) {

Calendar now = new GregorianCalendar();

SimpleDateFormat formatter = new SimpleDateFormat();

formatter.applyPattern(\现在时间: yyyy年MM月dd日HH时mm分ss秒 E\); String str = formatter.format(now.getTime()); System.out.println(str);

//伦敦奥运会的开幕时间是2012年7月27日20时12分,即是北京时间:2012年7月28日3时12 分 Calendar london2012 = new GregorianCalendar(2012, 6, 28, 3, 12, 0); // 得到两个时间相差的毫秒数

long distance = london2012.getTimeInMillis() - now.getTimeInMillis(); int days = (int) (distance / (24 * 60 * 60 * 1000)); // 转换为天数 // 剩余的转换为\总秒数\并考虑\四舍五入\ long totalSeconds = Math

.round((distance % (24 * 60 * 60 * 1000)) / 1000.0 + 0.5);

北京时间:xxxx年xx月xx日xx时xx分xx秒。

int hh = (int) (totalSeconds / (60 * 60)); // 转换成小时数

}

}

int mm = (int) ((totalSeconds % (60 * 60)) / 60); // 转换成分钟数 int ss = (int) ((totalSeconds % (60 * 60)) % 60); // 转换成秒钟数

System.out.println(\距离2012年伦敦奥运会开幕式还有:\ + days + \天\ + hh + \时\ + mm

+ \分\ + ss + \秒\);

问题:

(1)SimpleDateFormat类的功能是什么?

(2)SimpleDateFormat类的主要字符串模式有哪些? (3)用SimpleDateFormat类格式化输出日期的步骤是什么? (4)如何计算两个日期相隔的时间长度?

10.(选做题)编写一个Java程序,具备如下功能:

(1)利用输入框一次性输入多名学生的成绩(为整数),成绩间用空格或逗号隔开; (2)计算学生的平均成绩,通过消息框输出。

(提示:利用StringTokenizer类将字符串中的成绩分离出来,之后将它们存放到字符串数组中,再转化成int型数值,计算平均成绩并输出结果。)

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

Top