一、实验目的
熟悉JAVA中的String类、StringTokenizer类、Scanner类、StringBuffer类、Canlendar类、Pattern类和Matcher类的概念及用法。
二、实验要求
1.检索简历
简历的内容如下:
“姓名:张三。出生日期:1989.10.16。个人网站:http://www.zhang.com。身高:185cm,体重:72kg。”
编写一个java应用程序,判断简历中的姓名是否姓“张”,输出简历中的出生日期和个人网站,并判断简历中的身高是否大于180cm,体重是否小于75kg。
package t5_1;
public class mymain5_1 {
public static void main(String args[]){
String name = "张三";
String birthday = "1989.10.16";
String website = "http://www.zhang.com";
String height = "185cm";
String weight = "72kg";
System.out.printf("简历中的姓名是否姓张:"+name.startsWith("张")+"\n");
System.out.printf("出生日期:"+birthday+"\n");
System.out.printf("个人网站:"+website+"\n");
System.out.printf("身高是否大于180cm:");
if(Integer.parseInt(height.substring(0,3)) > 180){
System.out.printf("true"+"\n");
}
else{
System.out.printf("false"+"\n");
}
System.out.printf("体重是否小于75kg:");
if(Integer.parseInt(weight.substring(0,2)) < 75){
System.out.printf("true"+"\n");
}
else{
System.out.printf("false"+"\n");
}
}
}
2.找出字符串中的最大字符
设计一个字符串处理类,该类中包含一个方法char getMAX(String s),要求找出字符串s中编码值最大的那个字符。s字符串的内容从键盘输入。
package t5_2;
import java.util.Arrays;
import java.util.Scanner;
public class mymain5_2 {
public static void main(String args[]){
Scanner reader = new Scanner(System.in);
String s = reader.next();
stringprocess a = new stringprocess();
System.out.printf("字符串"+s+"中编码值最大的字符:"+a.getMAX(s));
//System.out.print(a.getMAX(s)); print可以直接输出函数返回值,printf不可以
reader.close();
}
}
class stringprocess{
char getMAX(String s){
char a[], b;
//a = new char[100];
a = s.toCharArray();
Arrays.sort(a);
b = a[a.length - 1];
return b;
}
}
3.菜单的价格
菜单的内容如下:
“北京烤鸭:189元,西芹炒肉:12.9元,酸菜鱼:69元,铁板牛柳:32元。”
编写一个JAVA应用程序,输出菜单中的价格数据,并计算出菜单的总价格。
package t5_3;
import java.util.StringTokenizer;
public class mymain5_3 {
public static void main(String args[]){
String menu = "北京烤鸭:189元,西芹炒肉:12.9元,酸菜鱼:69元,铁板牛柳:32元";
String regex = "[^0123456789.]+";
String pricedata = menu.replaceAll(regex, " ");
System.out.print("菜单中的价格数据:"+pricedata+"\n");
StringTokenizer fenxi = new StringTokenizer(pricedata, " ");
double sum = 0;
while(fenxi.hasMoreTokens()){
String item = fenxi.nextToken();
double price = Double.parseDouble(item);
sum += price;
}
System.out.print("菜单的总价格:"+sum+"元");
}
}
4.比较日期
编写一个JAVA应用程序,用户输入两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。
package t5_4;
import java.util.*;
import java.util.regex.*;
public class mymain5_4 {
public static void main(String args[]){
System.out.print("日期示例:2021/12/12 2021/12/13"+"\n"+"输入两个日期:");
Scanner s = new Scanner(System.in);
String data = s.nextLine();
//不能用next(),next()以空格和回车键作为结束符,空格后面的第二个日期没有被输入,显示为0
s.close();
String regex = "[0-9]+";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(data);
int d[] = new int[6];
for(int i = 0; m.find(); i++){
String item = m.group();
d[i] = Integer.parseInt(item);
}
Calendar c1 = Calendar.getInstance();
c1.set(d[0], d[1]-1, d[2]);
Calendar c2 = Calendar.getInstance();
c2.set(d[3], d[4]-1, d[5]);
if(c1.compareTo(c2) == -1){
System.out.print("第一个日期比第二个日期早"+"\n");
}
else if(c1.compareTo(c2) == 1){
System.out.print("第一个日期比第二个日期晚"+"\n");
}
else{
System.out.print("两个日期一样"+"\n");
}
if(c1.after(c2)){
Calendar cal = c1;
c1 = c2;
c2 = cal;
}
long m1 = c1.getTimeInMillis();
long m2 = c2.getTimeInMillis();
long m3 = m2 - m1;
int day = (int)(m3/(1000*60*60*24));
System.out.print("两个日期之间的间隔天数:"+day);
}
}
5.替换错别字
下列字符串中将“登录”错写为“登陆”,将“惊慌失措”错写为“惊慌失错”:
“忘记密码,不要惊慌失错,请登陆http://www.upc.edu.cn或登陆http://computer.upc.edu.cn,我们完美的为您解决问题。”
编写一个JAVA应用程序,输出错别字出现的位置,并用正确的文字替换,然后输出替换后的字符串。
package t5_5;
public class mymain5_5 {
public static void main(String args[]){
String example = "忘记密码,不要惊慌失错,请登陆http://www.upc.edu.cn或登陆http://computer.upc.edu.cn,我们完美的为您解决问题。";
String err1 = "登陆";
System.out.print("错别字\""+err1+"\"出现的位置是:"+"\n");
int loa1 = 0;
//while里面不要写成example.indexOf("登陆") != -1,陷入死循环电脑烫得要死
while(loa1 != -1){
loa1 = example.indexOf("登陆", loa1+err1.length());
if(loa1 != -1){
System.out.print(loa1+" ");
}
}
System.out.print("\n");
String err2 = "惊慌失错";
System.out.print("错别字\""+err2+"\"出现的位置是:"+"\n");
int loa2 = 0;
while(loa2 != -1){
loa2 = example.indexOf("惊慌失错", loa2+err2.length());
if(loa2 != -1){
System.out.print(loa2+" ");
}
}
System.out.print("\n");
System.out.print("替换后的字符串:"+"\n"+example.replaceAll("登陆", "登录").replaceAll("惊慌失错", "惊慌失措"));
}
}