常用实用类编程练习
一、检索简历
简历的内容如下:
“姓名:张三。出生日期:1989.10.16。个人网站:http://www.zhang.com。身高:185cm,体重:72kg。”
编写一个java应用程序,判断简历中的姓名是否姓“张”,输出简历中的出生日期和个人网站,并判断简历中的身高是否大于180cm,体重是否小于75kg。
代码如下:
public class FindPeopleMess {
public static void main(String[] args) {
// TODO Auto-generated method stub
String mess="姓名:张三。出生日期:1989.10.16。个人网站:http://www.zhang.com。身高:185cm,体重:72kg。";
//判断简历中的姓名是否姓“张”
int index=mess.indexOf(":");//第一次冒号出现的位置
String name=mess.substring(index+1); //获取从index+1位置开始的子串
if (name.startsWith("张")){
System.out.print("简历中的姓名为'张'"+"\n");
}
//输出简历中的出生日期和个人网站
index=mess.indexOf(":",index+1);//第二次冒号出现的位置
String date=mess.substring(index+1,index+11);//出生日期
System.out.print("出生日期:"+date+"\n");
index=mess.indexOf(":",index+1);//第三次冒号出现的位置
String web=mess.substring(index+1,index+21);//个人网站
System.out.print("个人网站:"+web+"\n");
//判断简历中的身高是否大于180cm
index=mess.indexOf(":",index+6);//第五次冒号出现的位置
String height=mess.substring(index+1,index+4);//身高
double heightNumber=Double.parseDouble(height);
if(heightNumber>180.0){
System.out.print("身高大于180cm"+"\n");
}
//判断简历中的体重是否小于75kg
index=mess.indexOf(":",index+1);//第六次冒号出现的位置
String weight=mess.substring(index+1,index+3);//体重
double weightNumber=Double.parseDouble(weight);
if(weightNumber<75){
System.out.print("体重小于75kg"+"\n");
}
}
运行结果:
二、找出字符串中的最大字符
设计一个字符串处理类,该类中包含一个方法char getMAX(String s),要求找出字符串s中编码值最大的那个字符。s字符串的内容从键盘输入。
HandleString类:
import java.util.Arrays;
public class HandleString {
char getMAX(String s){
char a[],b;
a=s.toCharArray();
Arrays.sort(a);
b=a[a.length-1];
return b;
}
}
text类:
import java.util.Scanner;
import java.util.Arrays;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
//从键盘输入字符串
Scanner reader=new Scanner(System.in);
System.out.print("请输入字符串:");
String s=reader.nextLine();
HandleString hs=new HandleString();
System.out.print("字符串中编码值最大的字符为:"+hs.getMAX(s));
}
}
运行结果:
三、菜单的价格
菜单的内容如下:
“北京烤鸭:189元,西芹炒肉:12.9元,酸菜鱼:69元,铁板牛柳:32元。”
编写一个JAVA应用程序,输出菜单中的价格数据,并计算出菜单的总价格。
import java.util.*;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
String menu="北京烤鸭:189元,西芹炒肉:12.9元,酸菜鱼:69元,铁板牛柳:32元。";
Scanner scanner = new Scanner(menu);
//正则表达式,模式串定为除数字和”.“之外,其他的所有字符。
String regex="[^0123456789.]+";
//useDelimiter()方法,将正则表达式作为分割标记
scanner.useDelimiter(regex);
double sum=0;
//scanner调用nextDouble()方法将数字型单词转化为double型数据返回。
//如果单词不是数字型,会发生InputMismatchException异常。所以要进行异常处理
while (scanner.hasNext()) {
try {
double price = scanner.nextDouble();
System.out.println(price);
sum += price;
}
catch (InputMismatchException exception) {
String tmp = scanner.next();
}
}
System.out.println("菜单总价: " + sum + "元");
}
}
运行结果:
四、比较日期
编写一个JAVA应用程序,用户输入两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。
import java.util.*;
import java.util.regex.*;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
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);
}
}
运行结果:
五、替换错别字
下列字符串中将“登录”错写为“登陆”,将“惊慌失措”错写为“惊慌失错”:
“忘记密码,不要惊慌失错,请登陆http://www.upc.edu.cn或登陆http://computer.upc.edu.cn,我们完美的为您解决问题。”
编写一个JAVA应用程序,输出错别字出现的位置,并用正确的文字替换,然后输出替换后的字符串。
import java.util.regex.*;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="忘记密码,不要惊慌失错,请登陆http://www.upc.edu.cn或登陆http://computer.upc.edu.cn,我们完美的为您解决问题。";
Pattern pattern1;
Pattern pattern2;
Matcher matcher1;
Matcher matcher2;
String regex1="登陆";
String regex2="惊慌失错";
pattern1=Pattern.compile(regex1);
matcher1=pattern1.matcher(str);
while(matcher1.find()){
String s=matcher1.group(); //返回find()找到的子串
System.out.print(matcher1.start()+"位置出现:");
System.out.print(s+"\n");
}
System.out.print("将\"登陆\"替换为\"登录\"的字符串:"+"\n");
String result=matcher1.replaceAll("登录");
System.out.print(result+"\n");
pattern2=Pattern.compile(regex2);
matcher2=pattern2.matcher(result);
while(matcher2.find()){
String s=matcher2.group(); //返回find()找到的子串
System.out.print(matcher2.start()+"位置出现:");
System.out.print(s+"\n");
}
System.out.print("将\"惊慌失错\"替换为\"惊慌失措\"的字符串:"+"\n");
result=matcher2.replaceAll("惊慌失措");
System.out.print(result);
}
}
运行结果: