00 13Java高级之类库使用案例分析

1 StringBuffer使用

定义一个StringBuffer类对象,然后通过append()方法向对象中添加26个小写字母,要求每次只添加一次,共添加26次,然后按照逆序的方式输出,并且可以删除前5个字符。

import java.lang.StringBuffer;

public class StringBufferDemo{
	public static void main(String[] args){
		StringBuffer sbf = new StringBuffer();
		//如果循环变量类型为Int,发现调用append方法时添加的并不是字母,
		//而是数字,如果要更改这样的错误,要么将int改为char,要么在append里将i
		//强制类型转换为char,即sbf.append((char)i);
		for(int i = 'a'; i <= 'z'; i++){
			sbf.append((char)i);
		}

		sbf = sbf.reverse();  //Causes this character sequence to be replaced by the reverse of the sequence
		sbf = sbf.delete(0,5); //Removes the characters in a substring of this sequence.
		System.out.println(sbf);
	}
}

2 随机数组

利用Random类产生5个1~30之间(包括1和30)的随机整数。

import java.util.Random;
//import java.lang.Number;
import java.util.Arrays;

public class JavaDemo{
	public static void main(String[] args){
		int[] arrs = new int[5];
		//System.out.println(arrs.length);
		myRandom(arrs, arrs.length);
		System.out.println(Arrays.toString(arrs));
	}

	public static void myRandom(int[] arrs, int num){
		Random random = new Random();

		for(int i = 0; i < num; i++){
			arrs[i] = random.nextInt(30) + 1;
		}
	}
}

3 Email验证

输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。

import java.util.regex.Pattern;

public class JavaDemo{
	public static void main(String[] args){
		System.out.println("ewrejds@sd.dsd: " + isEmail("ewrejds@sd.dsd"));
		System.out.println("_ewrejds@sd.dsd: " + isEmail("_ewrejds@sd.dsd"));
		System.out.println("ewr3ejdssd.dsd: " + isEmail("ewr3ejdssd.dsd"));
		System.out.println("ewr3ejds@sddsd: " + isEmail("ewr3ejds@sddsd"));
		System.out.println("323e@s4__d.dsd: " + isEmail("e@s4__d.dsd"));
		System.out.println("e@s4-d.dsd: " + isEmail("e@s4-d.dsd"));
		System.out.println("e@s4-d.dsd.dhs: " + isEmail("e@s4-d.dsd.dhs"));
	}

	public static boolean isEmail(String email){
		String regex = "[\\w+&&[^_]]\\w*@[\\w+-]+\\..+";
		return Pattern.matches(regex, email);
	}
}

4 扔硬币

编写程序,用0~1之间的随机数来模拟扔硬币实验,统计扔1000次后出现正、反面的次数并输出。

import java.util.Random;

public class JavaDemo{
	public static void main(String[] args){
		int[] count = coin(1000);
		System.out.println("正面:" + count[0]);
		System.out.println("反面:" + count[1]);
	}

	public static int[] coin(int times){
		Random random = new Random();
		int[] count = new int[2];

		for(int i = 0; i < times; i++){
			count[random.nextInt(2)]++;
		}

		return count;
	}
}

5 IP验证

编写正则表达式,判断给定的是否是一个合法的IP地址。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class JavaDemo{
	public static void main(String[] args){
		System.out.println("000.000.000.000: " + isIP("000.000.000.000"));
		System.out.println("0.0.0.0: " + isIP("0.0.0.0"));
		System.out.println("01.0.0.0: " + isIP("01.0.0.0"));
		System.out.println("10.0.0.0: " + isIP("10.0.0.0"));
		System.out.println("255.255.255.255: " + isIP("255.255.255.255"));
		System.out.println("255.255.255.256: " + isIP("255.255.255.256"));
		System.out.println("001.0.0.0: " + isIP("001.0.0.0"));

	}

	public static boolean isIP(String ip){
		//0-255.0-255.0-255.0-255,这里对IP地址不做区分,仅简单判断
		String regex = "(([01]?[0-9]?[0-9]\\.)|([2][0-5][0-5]\\.)){3}([01]?[0-9]?[0-9]|[2][0-5][0-5])";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(ip);
		return matcher.matches();
	}
}

6 HTML拆分

给定下面的HTML代码:
<font face="Arial, Serif" size="+2" color="red">,拆分HTML代码。

package cn.victor.demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JavaAPIDemo {
	
	public static void main(String[] args) throws Throwable {
		splitHTML("<font face=\"Arial, Serif\" size=\"+2\" color=\"red\">");
	}
	
	public static void splitHTML(String html) {
		Pattern pattern = Pattern.compile("\\w+=\"[a-zA-Z0-9, \\+]+\"");
		Matcher matcher = pattern.matcher(html);
		while(matcher.find()) {
			System.out.println(matcher.group(0));
		}
	}
	
}

7 国家代码

编写程序,实现国际化应用,从命令行输入国家的代号,例如,1表示中国,2表示美国,然后根据输入代号的不同调用不同的资源文件显示信息。
1、定义中文的资源文件
2、定义英文的资源文件
3、定义程序类进行加载控制

package cn.victor.demo;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;

public class JavaAPIDemo {
	
	public static void main(String[] args) {
		Locale loc = null;
		if(Integer.parseInt(args[0]) == 1) {
			loc = new Locale("zh", "CN");
		}else if(Integer.parseInt(args[0]) == 2) {
			loc = new Locale("en", "US"); 
		}else {
			System.err.println("输入错误");
			System.exit(0);
		}
		
		ResourceBundle reb = ResourceBundle.getBundle("org.lks.message.messages", loc);
		
		String val = reb.getString("info");
		String str = MessageFormat.format(val, "hhy", "lks");
		System.out.println(str);
	}	
}

8 学生信息比较

按照“姓名:年龄:成绩|姓名:年龄:成绩”的格式定义字符串“张三:21:98|李四:22:89|王五:20::70”,要求将每组值分别保存在Student对象之中,并对这些对象进行排序,排序的原则为:按照成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序。

package cn.victor.demo;

import java.util.Arrays;

public class JavaAPIDemo {
	
	public static void main(String[] args) {
		String str = "张三:21:98|李四:22:89|王五:20:70";
		String info[] = str.split("\\|");
		Student stu[] = new Student[info.length];
		for(int i = 0; i < info.length; i++) {
			String stuinfo[] = info[i].split(":");
			stu[i] = new Student(stuinfo[0], Integer.parseInt(stuinfo[1]), Double.parseDouble(stuinfo[2]));
		}
		
		Arrays.sort(stu);
		System.out.println(Arrays.toString(stu));
		
	}	
}

class Student implements Comparable<Student>{
	
	private String name;
	private int age;
	private double score;
	
	

	public Student() {
		super();
	}

	public Student(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}

	@Override
	public int compareTo(Student o) {
		if(this.getScore() != o.getScore()) {
			if(this.getScore() - o.getScore() > 0) {
				return -1;
			}else {
				return 1;
			}
		}else {
			return this.getAge() - o.getAge();
		}
	}
	
	

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", score=" + score + "]\n";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getScore() {
		return score;
	}

	public void setScore(double score) {
		this.score = score;
	}
	
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值