实验九 Java 常用类库的应用
一、实验目的
1 、掌握 StringBuffer 与 String 的区别。
2 、掌握日期操作类。
3 、掌握比较器及其基本原理。
二、实验学时
2 学时
三、实验类型 验证性实验
四、实验需求
1、硬件
每位学生配备计算机一台
2、软件
Windows XP 操作系统, JDK,eclipse ,MySQL
3、网络
无
4、工具
无
五、实验理论与预备知识
1 、泛型编程。
2 、Java 常用类库。
六、实验内容与结果
1 、定义一个 StringBuffer 方法对象,然后通过 append()方法向对象中添加 26 个小写字母,要求 每次只添加一次,共添加 26 次,然后按照逆序的方式输出,并且可以删除前 5 个字符。
import java.io.*;
import java.util.*;
public class Main{
public static void main(String args[])
{
StringBuffer buf = new StringBuffer();
char ch='a';
for(int i=1;i<26;i++)
{
buf.append(ch);
ch=(char)(ch+1);
}
System.out.println("完整字符串:"+buf);
String str=buf.reverse().toString();
System.out.println("反转字符串:"+str);
String str1=buf.delete(0,5).toString();
System.out.println("删除字符串:"+str1);
}
}
2 、利用 Random 类产生 5 个 1~30 之间(包括 1 和 30)的随机整数。
import java.util.*;
import java.io.*;
public class Main
{
public static void main (String []args)
{
Random rand= new Random();
for (int i= 1;i<=5;i++)
{
int a=1+rand.nextInt(30);
System.out.println(a);
}
}
}
3 、输入一个 Email 地址,然后使用正则表达式验证该 Email 地址是否正确。
方法一:
package test;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Run
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
String str=input.next();
String pat="\\w+@\\w+\\.[a-zA-Z]+";//定义模板
Pattern p=Pattern.compile(pat);//实例化模板
Matcher m=p.matcher(str);//返回一个Matcher实例化对象
if (m.matches())
{
System.out.println("YES");
}
else
{
System.out.println("NO");
}
}
}
方法二:
package test;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Run
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
String str=input.next();
String pat="\\w+@\\w+\\.[a-zA-Z]+";//定义模板
boolean st=str.matches(pat);
if (st)
{
System.out.println("YES");
}
else
{
System.out.println("NO");
}
}
}
4 、编写程序,用 0~1 之间的随机数来模拟扔硬币实验,统计扔 1000 次后出现正反面的次数并 输出。
package test;
import java.util.*;
public class Run
{
public static void main(String[] args)
{
int fan=0,zheng=0;
Random rand=new Random();
for(int i=0;i<1000;i++)
{
int x=rand.nextInt(2);
if(x==0)fan++;
else zheng++;
}
System.out.println("0:反面"+fan);
System.out.println("1:正面"+zheng);
}
}
5、按照“姓名: 年龄: 成绩|姓名: 年龄: 成绩”的格式定义字符串“张三: 21:98|李四: 22:89| 王五: 20:70”,要求将每组值分别保存在 Student 对象之中,并对这些对象进行排序,排序的原则为: 按照成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序。
package test;
import java.util.*;
class Student implements Comparable<Student>
{
private int age;
private float score;
private String name;
public Student(String name,int age,float score)
{
this.name=name;
this.age=age;
this.score=score;
}
public String toString()
{
return this.name+"\t"+this.age+"\t"+this.score;
}
public int compareTo(Student stu)
{
if(this.score>stu.score)
{
return -1;
}
else if(this.score<stu.score)
{
return 1;
}
else
{
if(this.age>stu.age)
{
return -1;
}
else if(this.age<stu.age)
{
return 1;
}
else
{
return 0;
}
}
}
}
public class Run
{
public static void main(String[] args)
{
String input="张三:21:98|李四:22:89|王五:20:70";
String s[]=input.split("\\|");
Student stu[]=new Student[s.length];
for(int i=0;i<s.length;i++)
{
String k[]=s[i].split(":");
stu[i]=new Student(k[0],Integer.parseInt(k[1]),Float.parseFloat(k[2]));
}
Arrays.sort(stu);
for(Student t:stu)
{
System.out.println(t);
}
}
}
6 、给定下面的 HTML 代码:
<font face=”Arial,Serif” size=”+2” color=”red”>
要求对内容进行拆分,拆分之后的结果是:
Face Arial Serif
size +2
color red
package test;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Run
{
public static void main(String[] args)
{
String input="<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
String pat="\\w+=\"[a-zA-Z0-9+,]+\"";
Pattern p=Pattern.compile(pat);
Matcher m=p.matcher(input);
//按照规则依次找出所有符合的字符串
while(m.find())
{
// System.out.println(m.group(0));
String str=m.group(0);
String s[]=str.split("=");
System.out.println(s[0]+"\t"+s[1].replace("\"",""));
}
}
}
特别的对group(),find()的解释
//package test;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
public static void main( String args[] )
{
// 按指定模式在字符串查找
String line = "123ra9040 123123aj234 adf12322ad 222jsk22";
String pattern = "(\\d+)([a-z]+)(\\d+)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
int i = 0;
// m.find 是否找到正则表达式中符合条件的字符串
while (m.find( ))
{
// 拿到上面匹配到的数据
System.out.println("----i="+i);
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
i++;
System.out.println("|||||||");
System.out.println("");
}
}
}
group(0):满足"(\d+)([a-z]+)(\d+)“的字符串
group(1):满足”(\d+)“的字符串
group(2):满足”([a-z]+)"的字符串
group(3):满足“(\d+)"的字符串
样例说明:“123ra9040 123123aj234 adf12322ad 222jsk22”
find是按照"(\d+)([a-z]+)(\d+)"的条件查找的,即:
group(0):【123ra9040】 【123123aj234】 【222jsk22】
group(2): 【123】 【123123】 【222】
group(3):【ra】 【aj】 【jsk】
group(4):【9040】 【234】 【22】
结果:
----i=0
Found value: 123ra9040
Found value: 123
Found value: ra
Found value: 9040
|||||||
----i=1
Found value: 123123aj234
Found value: 123123
Found value: aj
Found value: 234
|||||||
----i=2
Found value: 222jsk22
Found value: 222
Found value: jsk
Found value: 22
|||||||
共 2 页,第 2 页