栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

实验九 Java 常用类库的应用(针对难题6有详细说明)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实验九 Java 常用类库的应用(针对难题6有详细说明)

实验九 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
{
	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
			return 1;
		}
		else 
		{
			if(this.age>stu.age)
			{
				return -1;
			}
			else if(this.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
			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 代码:


要求对内容进行拆分,拆分之后的结果是:

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="";

		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 页

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号