15.需求:校验qq号码.
1:要求必须是5-15位数字
2:0不能开头
3:必须都是数字
a:非正则表达式实现
```
public static void main(String[] args) {
System.out.println(checkQQ("1124812349a"));
}
public static boolean checkQQ(String qq) {
boolean flag = true;
if (qq.length() >= 5 && qq.length() <= 15) {
if (!qq.startsWith("0")) {
char[] cr = qq.toCharArray();
for (int i = 0; i < qq.length(); i++) {
if (!(cr[i] >= '0' && cr[i] <= '9')) {
flag = false;
break;
}
}
} else {
flag = false;
}
} else {
flag = false;
}
return flag;
}
```
b:正则表达式实现
```
public static void main(String[] args) {
String regex = "[1-9]\\d{4,14}";
System.out.println("012324".matches(regex));//false
System.out.println("1234".matches(regex));//false
System.out.println("123245".matches(regex));//true
System.out.println("123456789012345".matches(regex));//true
System.out.println("1234567890123456".matches(regex));//false
System.out.println("ab".matches(regex));//false
}
```
16.有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘3 7 9 2 8 22‘。
```
public static void main(String[] args) {
String give = "2 7 8 3 22 9";
String[] sarr = give.split(" ");
int[] arr = new int[sarr.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(sarr[i]);
}
Arrays.sort(arr);//排序
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (int j = 0; j < arr.length; j++) {
if (arr[j] % 2 != 0) {
sb1.append(arr[j]);
sb1.append(" ");
} else {
sb2.append(arr[j]);
sb2.append(" ");
}
}
sb1.append(sb2);
System.out.println(sb1.toString());
}
```
17.将int数组中的奇数放到一个新的int数组中返回。
```
public static void main(String[] args) {
int[] give ={1,2,4,6,8,9,5,11,7};
System.out.println(Arrays.toString(give));
System.out.println(Arrays.toString(getOdd(give)));
}
public static int[] getOdd(int[] give){
StringBuilder sb = new StringBuilder();
for(int i=0;i<give.length;i++){
if((give[i]%2)!=0){
sb.append(give[i]);
sb.append(" ");
}
}
String[] needS = sb.toString().split(" ");
int[] needI = new int[needS.length];
for(int j=0;j<needI.length;j++){
needI[j]=Integer.parseInt(needS[j]);
}
Arrays.sort(needI);
return needI;
}
```
18.需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
```
public static void main(String[] args) {
String give = "sdqqfgkkkhjppppkl";
//"()"代表一组,"."代表任意字符,"\\1"代表第一组再出现一次,"+"代表出现1以或者多次
String regex = "(.)\\1+";
String[] result = give.split(regex);
for(String a : result){
System.out.println(a);
}
}
```
19.需求:“我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程” ,将此字符串还原成:“我要学编程”。
```
public static void main(String[] args) {
String give = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String s1 = give.replaceAll("\\.", "");
//$1代表获取到前面的第一组
String s2 = s1.replaceAll("(.)\\1+", "$1");
System.out.println(s2);
}
```
20.把一个字符串中的手机号码获取出来;
```
public static void main(String[] args) {
String give = "我的手机号码是13917777277,还用过13888888888";
Pattern p = Pattern.compile("[1][3578]\\d{9}");//手机号的正则表达式
Matcher m = p.matcher(give);//匹配的字符串
while(m.find()){//找到符合正则表达式的字符串
System.out.println(m.group());//打印找到的字符串
}
}
```
21.判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称.
```
public static void main(String[] args) {
File dir = new File("E:/");
String[] arr = getFiles(dir);
for (String str : arr) {
System.out.println(str);
}
}
public static String[] getFiles(File dir) {
// 文件过滤器
FilenameFilter ff = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file = new File(dir, name);
// 只留下以".jpg"结尾的文件
return file.isFile() && file.getName().endsWith(".jpg");
}
};
// 返回经过过滤器过滤的文件列表
return dir.list(ff);
}
```
22.在控制台录入文件的路径,将文件拷贝到当前项目下
```
public static void main(String[] args) throws IOException {
File file = getFile();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
bos = new BufferedOutputStream(new FileOutputStream(file.getName()));
int b;
while ((b = bis.read()) != -1) {
bos.write(b);
}
} finally {
try {
if (bis != null)
bis.close();
} finally {
if (bos != null)
bos.close();
}
}
System.out.println("拷贝完成!");
}
private static File getFile() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个文件的绝对路径,拷贝到项目中:");
String str = sc.nextLine();
File file = new File(str);
if (file.exists()) {
if (file.isDirectory()) {
System.out.println("输入的地址是一个文件夹,请重新输入!");
} else {
System.out.println("文件名正确,正在拷贝!");
return file;
}
} else {
System.out.println("输入的地址有误,请重新输入!");
}
}
}
```
23.将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出.
```
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请键入内容保存到text.txt,键入quit结束");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("text.txt"));
while (true) {
String line = sc.nextLine();
if ("quit".equals(line)) {
break;
}
bos.write(line.getBytes());
bos.write("\r\n".getBytes());
}
bos.close();
System.out.println("保存完毕!");
}
```
24.将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
```
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("exercise.txt"));
ArrayList<String> list = new ArrayList<String>();
String line;
while((line = br.readLine())!=null){
list.add(line);
}
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("rev.txt"));
for(int i=list.size()-1;i>=0;i--){
bw.write(list.get(i));
bw.newLine();
}
bw.close();
}
```
25.final,finally和finalize的区别
```
final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
```
26.如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。
```
finally的代码肯定会执行,在return后执行;
``` |
|