类库使用案例

编程入门 行业动态 更新时间:2024-10-21 04:09:11

<a href=https://www.elefans.com/category/jswz/34/1731310.html style=类库使用案例"/>

类库使用案例

目录

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

结构化的字符串处理:”内容|内容“,如果要复杂情况内容里面可能由其它标记。

更多推荐

类库使用案例

本文发布于:2024-02-25 03:38:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1697652.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:类库   案例

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!