类库使用案例"/>
类库使用案例
目录
StringBuffer的使用
随机数组
Email验证
扔硬币
IP验证
HTML拆分
国家代码
学生信息比较
学习笔记
StringBuffer的使用
定义一个StringBuffer类对象,然后通过append()方法向对象中添加26小写字母,然后按照逆序的方式输出,并且可以删除前五个字母。
package cn.ren.demo;public class JavaAPIDemo {public static void main(String[] args) throws Exception {StringBuffer buf = new StringBuffer() ;for (int x = 'a'; x <= 'z'; x ++) { // 数字与字符可以直接转换buf.append((char) x) ;}buf.reverse().delete(0, 4) ;System.out.println(buf);}
}
因为StringBuffer的内容是允许修改的,而String内容是不允许修改的,如果现在程序是单线程的开发,所以不需要考虑并发访问的问题。
随机数组
利用Random类产生5个1~30包括(1与30)之间的随机整数,Random产生的随机数操作之中是包含有数字0。
package cn.ren.demo;import java.util.Arrays;
import java.util.Random;
public class JavaAPIDemo {public static void main(String[] args) throws Exception {int [] result = NumberFactory.create(5) ;System.out.println(Arrays.toString(result));}
}
class NumberFactory{private static Random random = new Random() ;/*** 根据随机数生成一个数组内容,不包括0* @param length 要开辟的数组大小* @return 随机数组*/public static int [] create(int length) {int data [] = new int [length] ;int foot = 0 ;while (foot < length) {int temp = random.nextInt(30) ;if (temp != 0) {data[foot ++] = temp ; }}return data ;}
}
Email验证
对如此时的输入可以通过命令参数实现数据的输入,如果要进行验证,最好的做法是设置一个单独的验证处理类。
package cn.ren.demo;public class JavaAPIDemo {public static void main(String[] args) throws Exception {if (args.length != 1) {System.out.println("没有输入初始化参数,正确的格式:java JavaAPIDemo EMAIL地址");System.exit(1);}String email = args[0] ;System.out.println(Validator.isEmail(email) );}
}
class Validator{ // 定义一个验证程序类private Validator() {} public static boolean isEmail(String email) {if (email == null || "".equals(email)) { // 数据为空 两个变量的值相等和内容相等return false ;}String regex = "\\w+@\\w+\\.\\w+" ;return email.matches(regex) ; }
}
如果以后有更多的验证,只需要在Validator中修改扩展方法即可
扔硬币
用0~1之间的随机数来模拟扔硬币实验,统计1000次后的结果。
package cn.ren.demo;import java.util.Random;public class JavaAPIDemo {public static void main(String[] args) throws Exception {Coin coin = new Coin() ;coin.throwCoin(1000);System.out.println("【抛硬币】正面次数:" + coin.getFront() + "、反面次数:" + coin.getBack());}
}class Coin { // 模拟扔硬币private int froot ; // 正面的次数private int back ; // 保存背面的次数private Random random = new Random() ;/*** 模拟抛硬币的过程* @param num 抛硬币的次数*/public void throwCoin(int num){for(int x = 0; x < num; x++) {int res = random.nextInt(2) ;if (res == 0) {this.froot ++ ;} else {this.back ++ ;}}}public int getFront() {return this.froot ;}public int getBack() {return this.back ;}
}
IP验证
判断一个IP地址是否合法。IP地址的组成就是数字,对于数字的组成有一个基础的要求,第一位的只能是无、1、2,第二位的内容0-9、再后面0-9。
package cn.ren.demo;
public class JavaAPIDemo {public static void main(String[] args) throws Exception {String str = "192.168.1.555" ;System.out.println(Validator.validateIP(str)) ;}
}class Validator {private Validator () {}/*** 验证ip地址是否合法*/public static boolean validateIP(String ip) {if (ip == null || "".equals(ip)) {return false ;}String regex = "([12]?[0-9]?[0-9]\\.){3}([12]?[0-9]?[0-9])" ;if(ip.matches(regex)) { // 判断格式后,还需要判断范围值String data [] = ip.split("\\.") ;for (int x = 0; x < data.length; x ++) {int temp = Integer.parseInt(data[x]) ;if (temp > 255) { // 范围不和return false ;}}return true ;} else { // 格式不对return false ;}}
}
HTML拆分
对于此时的操作最简单的就是分组处理。
package cn.ren.demo;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class JavaAPIDemo {public static void main(String[] args) throws Exception {String str = "<font face=\"Arial,Serif\"size=\"+2\"color=\"red\">" ;String regex = "\\w+=\"[a-zA-Z0-9,\\+]+\"" ;Matcher matcher = Patternpile(regex).matcher(str) ;while(matcher.find()) {String temp = matcher.group(0) ;String result [] = temp.split("=") ;System.out.println(result[0] + " " + result[1].replaceAll("\"", ""));}}
}
分组将匹配的取出来,与find()方法一起使用
国家代码
实现国际化应用,从命令行输入国家代号,例如,1表示中国,2表示美国,然后根据输入代号的不同调用不同的资源文件显示。
本程序的实现肯定要通过Locale类的对象来指定区域,随后使用ResourceBundle类加载资源文件。而对于数据的输入可以使用初始化的参数形式完成。
1、定义中文资源文件:cn.ren.message.Messages_zh_CN.properties
info=感谢啥的信任!
2、定义英文资源文件:cn.ren.message.Messages_en_US.properties
info=Thanks sha for your intrust !
3、定义程序类加载控制
package cn.ren.demo;import java.util.Locale;
import java.util.ResourceBundle;
public class JavaAPIDemo {public static void main(String[] args) {if (args.length != 1) { // 没有得到输入参数System.out.println("程序执行错误,没有设置区域编码,正确的格式:java JavaAPIDemo 选择项");System.exit(1) ; // 系统退出}int choose = Integer.parseInt(args[0]) ;System.out.println(new MessageUtil().getMessage(choose));}
}
class MessageUtil {public static final int CHINA = 1 ;public static final int USA = 2 ;private static final String KEY = "info" ;private static final String BASENAME = "cn.ren.message.Messages" ;public String getMessage(int num) {Locale loc = this.getLocale(num) ;if (loc == null) {return "Nothing" ;} else {return ResourceBundle.getBundle(BASENAME, loc).getString(KEY) ;}}private Locale getLocale(int num) {switch(num) {case CHINA : {return new Locale("zh", "CN") ;}case USA : {return new Locale("en", "US") ;}default: {return null ;}}}
}
学生信息比较
按照”姓名: 年龄: 成绩|姓名: 年龄: 成绩“的格式定义字符串"张三:21:98|李四:22:89|王五:37:56"将每组值保存在Student对象之中,并对这些对象进行排序,排序的原则为:成绩从高到底,如果成绩相同,按照年龄由低到高排序。
本程序最典型的做法是使用比较器完成处理。
package cn.ren.demo;import java.util.Arrays;public class JavaAPIDemo {public static void main(String[] args) {String input = "张三:25:98|李四:22:98|王五:37:56" ;String result [] = input.split("\\|") ;Student students [] = new Student[result.length] ;for (int x = 0; x < result.length; x ++) {String temp [] = result[x].split(":") ;students[x] = new Student(temp[0], Integer.parseInt(temp[1]), Double.parseDouble(temp[2])) ;}Arrays.sort(students) ;System.out.println(Arrays.toString(students));}
}class Student implements Comparable<Student> {private String name ;private int age ;private double score ;public Student(String name, int age, double score) {super();this.name = name;this.age = age;this.score = score;}@Overridepublic int compareTo(Student stu) {if (this.score < stu.score) {return 1 ;} else if (this.score > stu.score) {return -1 ;} else {return this.age - stu.age ;}}@Overridepublic String toString() {return "【学生信息】姓名:" + this.name + "、年龄:" + this.age + "、成绩:" + this.score + "\n" ;}
}
结构化的字符串处理:”内容|内容“,如果要复杂情况内容里面可能由其它标记。
更多推荐
类库使用案例
发布评论