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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

|--题目1:
        * 请在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,
        * 如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),
        * 否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果
        * 传入的数组为null,应抛出IllegalArgumentException异常。
        * -----------------------------------------------------------------------------------------
        * 在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,
        * 例如,字符不存在,字符存在,传入的数组为null等。
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 可以返回已有字符出现的位置                 =1分=
        * 可以返回-1                                                =1分=
        * 能抛出异常                                                =4分=

|--题目2:
        * 键盘录入一段字符串,要求使用map集合统计出字符串中字母和数字出现的次数,
        * 如果有其他字符则当做*号来统计,最后按指定方式输出(不要求排序)
        * 例如录入字符串:aaaabbbcccddd1112233ABC^^^
        * 输出的格式为: *(3),1(3),2(2),3(2),a(4),b(3),c(3),d(3)
        * (注意:括号前面是字符,里面是次数)
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 将字符串转换成字符数组,并且遍历每一个字符                =1分=
        * 将字符和字符出现的个数存入map集合                                =5分=
                *         没有把其他字符当作*存储                                                =扣2分=
        * 可以按照正确的格式输出                                                =4分=
                *         打印结果末尾有逗号                                                        =扣1分=

|--题目3:
        * 已知User类,该类有name(String类型)和age(int类型)两个属性,
        * 请编写代码实现ArrayList<User>排序,
        * 要求按照User对象的age的倒序排序。
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 创建完整的User类                                        =3分=
        * 创建几个User的实例存入ArrayList        =1分=
        * 可以按年龄倒序排序                                =6分=
                *         实现排序,但是是正序                                =扣3分=
|--题目4:
        *需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名

12 个回复

正序浏览
好东西,值得保留
回复 使用道具 举报
厉害了world哥
回复 使用道具 举报
随便看看!!!!
回复 使用道具 举报
厉害了world哥
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
zhouxiong 发表于 2016-10-16 17:49
package com.itheima.exam.time1;

import java.util.ArrayList;

这里用了比较器排序和选择排序两种方法
回复 使用道具 举报
zhouxiong 发表于 2016-10-16 17:49
package com.itheima.exam.time1;

import java.util.ArrayList;

这里用了比较器排序和选择排序两种方法
回复 使用道具 举报
|--题目4:
package com.heima.test;

import java.io.File;
import java.io.FileReader;
import java.util.Scanner;

public class Test5 {

        /**
         * 需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
         *
         * 分析:
         * 从键盘接收一个文件夹路径
         * 1,如果录入的是不存在,给与提示
         * 2,如果录入的是文件路径,给与提示
         * 3,如果是文件夹路径,直接返回
         *
         * 打印出该文件夹下所有的.java文件名
         * 1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中
         * 2,遍历数组,对每一个文件或文件夹做判断
         * 3,如果是文件,并且后缀是.java的,就打印
         * 4,如果是文件夹,就递归调用
         */
        public static void main(String[] args) {
                File dir = getDir();
                printJavaFile(dir);
        }

        /*
         * 获取键盘录入的文件夹路径
         * 1,返回值类型File
         * 2,不需要有参数
         */
        public static File getDir() {
                Scanner sc = new Scanner(System.in);                                //创建键盘录入对象
                System.out.println("请输入一个文件夹路径");
                while(true) {
                        String line = sc.nextLine();                                        //将键盘录入的文件夹路径存储
                        File dir = new File(line);                                                //封装成File对象
                        if(!dir.exists()) {
                                System.out.println("您录入的文件夹路径不存在,请重新录入");
                        }else if(dir.isFile()) {
                                System.out.println("您录入的是文件路径,请重新录入文件夹路径");
                        }else {
                                return dir;
                        }
                }
        }
        /*
         * 获取文件夹路径下的所.java文件
         * 1,返回值类型 void
         * 2,参数列表File dir
         */
        public static void printJavaFile(File dir) {
                //1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中
                File[] subFiles = dir.listFiles();
                //2,遍历数组,对每一个文件或文件夹做判断
                for (File subFile : subFiles) {
                        //3,如果是文件,并且后缀是.java的,就打印
                        if(subFile.isFile() && subFile.getName().endsWith(".java")) {
                                System.out.println(subFile);
                        //4,如果是文件夹,就递归调用
                        }else if (subFile.isDirectory()){
                                printJavaFile(subFile);
                        }
                }
        }
}
回复 使用道具 举报
package com.itheima.exam.time1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import com.itheima.exam.bean.User;

/*
* 题目3:
        * 已知User类,该类有name(String类型)和age(int类型)两个属性,
        * 请编写代码实现ArrayList<User>排序,
        * 要求按照User对象的age的倒序排序。(禁止使用Collections.sort() 和 TreeSet)
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 创建完整的User类                                        =3分=
        * 创建几个User的实例存入ArrayList        =1分=
        * 可以按年龄倒序排序                                =6分=
                *         实现排序,但是是正序                                =扣3分=
*/
public class Test4 {
        public static void main(String[] args) {
//                demo1();
                /*ArrayList<Integer> al = new ArrayList<>();
                al.add(1);
                al.add(11);
                al.add(9);
                al.add(6);
                al.add(3);
               
                Collections.sort(al);
               
                System.out.println(al);*/
                ArrayList<User> al = new ArrayList<>();
                al.add(new User("希尔瓦纳斯", 20));
                al.add(new User("奈文摩尔", 21));
                al.add(new User("奥蕾莉亚", 19));
                al.add(new User("污妖王", 22));
               
                Collections.sort(al, new Comparator<User>() {

                        @Override
                        public int compare(User o1, User o2) {
                                int num = o2.getAge() - o1.getAge();
                                return num == 0 ? o2.getName().compareTo(o1.getName()) : num;
                        }
                });
               
                System.out.println(al);
               
        }

        private static void demo1() {
                ArrayList<User> al = new ArrayList<>();
                al.add(new User("希尔瓦纳斯", 20));
                al.add(new User("奈文摩尔", 21));
                al.add(new User("奥蕾莉亚", 19));
                al.add(new User("污妖王", 22));
               
                sort(al);
               
                System.out.println(al);
        }

        private static void sort(ArrayList<User> al) {
                for (int i = 0; i < al.size() - 1; i++) {
                        for (int j = i + 1; j < al.size() ; j++) {
                                if(al.get(i).getAge() < al.get(j).getAge()) {
                                        User temp = al.get(i);
                                        al.set(i, al.get(j));
                                        al.set(j, temp);
                                }
                        }
                }
        }
}
回复 使用道具 举报
package com.itheima.exam.time1;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/*
* 题目2:
        * 键盘录入一段字符串,要求使用map集合统计出字符串中字母和数字出现的次数,
        * 如果有其他字符则当做*号来统计,最后按指定方式输出(不要求排序)
        * 例如录入字符串:aaaabbbcccddd1112233ABC^^^
        * 输出的格式为: *(3),1(3),2(2),3(2),a(4),b(3),c(3),d(3)
        * (注意:括号前面是字符,里面是次数)
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 将字符串转换成字符数组,并且遍历每一个字符                =1分=
        * 将字符和字符出现的个数存入map集合                                =5分=
                *         没有把其他字符当作*存储                                                =扣2分=
        * 可以按照正确的格式输出                                                =4分=
                *         打印结果末尾有逗号                                                        =扣1分=
*/
public class Test3 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
//                String line = sc.nextLine();
                String line = "aaaabbbcccddd1112233ABC^^^&^%";
                // 定义一个Map集合,键为每一个字符,值为字符出现的次数
                HashMap<Character, Integer> hm = new HashMap<>();
                // 将字符串转换为字符数组
                char[] chs = line.toCharArray();
                // 遍历字符数组
                for (char c : chs) {
                        // 判断,如果遍历出来的字符是字母或者数字,我就正常存 'a''z'  'A''Z'   '0''9'
                        if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9'){
                                /*if(!hm.containsKey(c)) {
                                        hm.put(c, 1);
                                }else{
                                        hm.put(c, hm.get(c) + 1);
                                }*/
                                hm.put(c, !hm.containsKey(c) ? 1 : hm.get(c) + 1);
                        }else{
                                // 如果不是字母或者数字,我就不管他是什么,都当做*
                                /*if(!hm.containsKey('*')) {
                                        hm.put('*', 1);
                                }else{
                                        hm.put('*', hm.get('*') + 1);
                                }*/
                                hm.put('*', !hm.containsKey('*') ? 1 : hm.get('*') + 1);
                        }
                }
               
//                System.out.println(hm);
                // 格式:输出的格式为: *(3),1(3),2(2),3(2),a(4),b(3),c(3),d(3)
                // 创建一个字符串缓冲区
                StringBuilder sb = new StringBuilder();
                // 遍历Map集合
                // 获取集合中所有键的集合
                Set<Character> keySet = hm.keySet();
                for (Character key : keySet) {
                        Integer value = hm.get(key);
                        sb.append(key).append("(").append(value).append(")").append(",");
                }
               
                System.out.println(sb.substring(0,sb.length() - 1));
        }
}
回复 使用道具 举报 1 0
package com.itheima.exam.time1;
/*
* 题目1:
        * 请在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,
        * 如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),
        * 否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果
        * 传入的数组为null,应抛出IllegalArgumentException异常。
        * -----------------------------------------------------------------------------------------
        * 在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,
        * 例如,字符不存在,字符存在,传入的数组为null等。
        *
        * 结果正确,没投机取巧满分,不能运行0分
        *
        * 可以返回已有字符出现的位置                 =1分=
        * 可以返回-1                                                =1分=
        * 能抛出异常                                                =4分=
*/
public class Test2 {
        public static void main(String[] args) {
                char[] arr = {'a', 'b', 'c', 'd', 'e', 'f', };
                int index = getIndex(arr , 'f');
                System.out.println(index);
                System.out.println(getIndex(arr, 'g'));
                char[] arr2 = null;
                getIndex(arr2, 'a');
        }

       
        /**
         * 此方法用于返回字符数组中,给定字符第一次出现的索引
         *
         * @param arr 字符数组
         * @param c        要查找的字符
         * @return 字符所在的索引
         */
        private static int getIndex(char[] arr, char c) {
                if(arr == null) {
                        throw new IllegalArgumentException("数组空了");
                }
                for (int i = 0; i < arr.length; i++) {
                        if(arr[i] == c) {
                                return i;
                        }
                }
                return -1;
        }
       
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马