【JAVA课程作业】实验九 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<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 页

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 常用Java 类库有很多,其中一些是: 1. Apache Commons:提供了一系列通用的工具类,如字符串处理、文件处理、数学运算等。 2. Google Guava:提供了大量的工具类,包括集合处理、缓存、并发等。 3. Spring Framework:是一个开源的 Java 应用框架,提供了许多企业级应用所需的基础功能,如 IoC 容器、事务管理、数据访问等。 4. Hibernate:是一个开源的持久层框架,提供了与数据库交互的简单方法。 这仅仅是一个简单的列表,实际上 Java类库数量非常多,还有很多其他非常有用的类库,比如 Jackson、Log4j、JUnit 等。 ### 回答2: 常用Java类库有很多,下面列举了一些常见的类库: 1. Java标准类库JavaSE):包括常用的核心类库、集合类库以及输入输出类库等。 2. Java企业级类库JavaEE):包括Servlet、JSP、JDBC等,用于开发企业级应用程序的类库。 3. Apache Commons:提供了大量常用的工具类,如StringUtils用于字符串处理、FileUtils用于文件处理等。 4. Google Guava:提供了一些高效便捷的工具类,如集合工具类、IO工具类、字符串工具类等。 5. Jackson/Dropwizard:用于处理JSON数据的类库,可以实现JSON数据的序列化和反序列化。 6. Log4j/Logback:用于日志记录的类库,可以方便地记录日志信息。 7. Junit/TestNG:用于进行单元测试的类库,可以对代码进行测试以保证代码的稳定性和可靠性。 8. Spring框架:提供了大量的类和接口用于实现控制反转(IOC)和面向切面编程(AOP)等功能。 9. Hibernate:用于对象关系映射(ORM)的类库,可以简化数据库操作。 10. Apache HttpClient:用于发送HTTP请求的类库,可以实现与Web服务器的交互。 当然,还有很多其他的优秀类库,以上只是一些常见的类库。在实际开发中,根据具体需求选择合适的类库是非常重要的。 ### 回答3: Java类库是一组预定义的类和接口,提供了丰富的功能和工具,使Java开发人员更加高效和方便地编写代码。常用Java类库有以下几个: 1. Java标准类库:即Java SE(标准版)中提供的类库,包含了Java程序开发的核心类和接口,如集合框架、IO流、多线程、网络编程等。 2. Java集合框架:提供了一套用于存储和操作数据的类和接口,包括List、Set、Map等,是Java程序中常用的数据结构。 3. Java输入输出:提供了一组用于读写数据的类和接口,包括File、InputStream、OutputStream等,使Java程序可以方便地操作文件和流。 4. Java多线程库:提供了一组用于并发编程的类和接口,如Thread、Runnable、Lock等,可以实现多线程操作和同步控制。 5. Java网络编程:提供了一组用于网络通信的类和接口,如Socket、ServerSocket等,可以实现客户端和服务器之间的网络通信。 6. Java图形界面(GUI)库:包括AWT和Swing两个库,提供了一组用于创建图形用户界面的类和接口,使Java程序可以构建各种图形界面应用程序。 7. Java数据库连接(JDBC):提供了一组用于与数据库交互的类和接口,可以通过Java程序连接和操作各种关系型数据库。 除了以上几个常用Java类库,还有许多其他的类库可供选择和使用,如Apache Commons系列、Google Guava等,它们提供了各种实用的工具类和扩展,可以进一步简化Java开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯卡码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值