A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huburt 中级黑马   /  2016-5-19 15:28  /  312 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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后执行;
```

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马