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