实验名称:实验6:Java常用实用类
一、实验目的
熟悉Java 中的常用实用类。
二、实验内容与结果
(说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。)
任务1:String类的public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。
处理思路
如题,输入字符串并用String类的public char charAt(int index)方法得到该字符串中首位末位字符,进行输出
关键技术说明
String类的public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。
字符串末尾可用length()-1表示,即字符序列长度减一得位置
程序源码
package s;
import java.util.Scanner;
public class s1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s1=sc.next();
System.out.println("首位字符:"+s1.charAt(0));
System.out.println("末位字符:"+s1.charAt(s1.length()-1));
}
}
运行结果截图
任务2:编写程序剔除一个字符串中的全部非数字字符,例如,将形如“ab123you”的非数字字符全部剔除,得到字符串“123”(参看例子10)。
处理思路
如题,输入字符串,并使调用replaceAll()方法剔除所有非数字字符返回一个新String对象,进行输出
关键技术说明
String s2=s1.replaceAll("[\\D]","");
通过正则表达式+replaceAll()实现
\D:代表任何一个非数字字符
程序源码
package s;
import java.util.Scanner;
public class s2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s1=sc.next();
String s2=s1.replaceAll("[\\D]","");
System.out.println(s1+"剔除所有非数字字符后:"+s2);
}
}
运行结果截图
任务3:使用Scanner类的实例解析字符串:"数学87分,物理76分,英语96分"中的考试成绩,并计算出总成绩以及平均分数(参看例子14)。
处理思路
如题,构造Scanner类对象,进行数据解析处理得到想要的数据,并用hasNext()与next()进行处理,求和计数求均值
关键技术说明
scanner.useDelimiter("[^0123456789.]+");//匹配所有非数字字符序列
hasNext()最后一个布尔型与next()挨个返回区别
程序源码
package s;
import java.util.Scanner;
public class s3 {
public static void main(String[] args) {
String grades="数学87分,物理76分,英语96分";
Get.give(grades);
}
}
package s;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Get {
public static void give(String grades) {//static方法,类名可调用
Scanner scanner = new Scanner(grades);
scanner.useDelimiter("[^0123456789.]+");//scanner设置分隔标记
double sum = 0;
int i=0;
while (scanner.hasNext()) {
try {
double grade = scanner.nextDouble();
sum = sum + grade;
i++;
}
catch (InputMismatchException exp) {
String t = scanner.next();
}
}
double average =sum/i;
System.out.println("总成绩:"+sum);
System.out.println("平均成绩:"+average);
}
}
运行结果截图
任务4:计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日使用main方法的参数传递到程序中(见例子4)。
处理思路
如题,输入字符串yyyyMMdd形式日期,用SimpleDateFormat()转换为日期形式,再用getTime()计算时间相减为毫秒差再计算得天数差(用Data类解)
关键技术说明
用SimpleDateFormat()转换成yyyyMMdd形式输入日期
使用parse()方法将输入的字符串转换为日期
getTime() 方法返回从 1970 年 1 月 1 日午夜到指定日期之间的毫秒数。
将毫秒转换为天
程序源码
package s;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class s4 {
public static void main(String[] args) throws ParseException {
// 传输格式yyyyMMdd
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个日期");
String date1 = sc.next();
System.out.println("请输入第二个日期");
String date2 = sc.next();
// 用SimpleDateFormat()转换成yyyyMMdd形式输入日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
//使用parse()方法将字符串转换为日期
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
long time = Math.abs(d2.getTime() - d1.getTime());// getTime() 方法返回从 1970 年 1 月 1 日午夜到指定日期之间的毫秒数。
System.out.println("间隔天数:" + (time / (1000 * 60 * 60 * 24)));//将ms转换为天
}
}
运行结果截图