zoukankan      html  css  js  c++  java
  • JavaSE:第十七章:编程测试题

    **练习:求1+2!+3!+...+20!的和**

        long sum = 0;
        for (int i = 1; i <= 20; i++) {
            long temp= 1;
            for (int j = 1; j <= i; j++) {
                temp *= j;
            }
            sum += temp;
        }
        System.out.println(sum);
    结果为:2561327494111820313

    **练习:获取字串中各个的字符数量**


        public static void main(String[] args) {
                String string = "中国,国国哥,好帅是个大帅,哥哥";
                HashMap<Character, Integer> hashMap = new HashMap<>();
                while(string.length()>0) {
                    Character c = string.charAt(0);
                    string = string.substring(1);
                    Integer integer = hashMap.get(c);
                    if(integer == null ) {
                        hashMap.put(c, 1);
                    }else {
                        hashMap.put(c, integer + 1);
                    }
                }
                Set<Entry<Character, Integer>> entrySet = hashMap.entrySet();
                for (Entry<Character, Integer> entry : entrySet) {
                    System.out.println(entry);
                }
        }
    结果:

        哥=3
        帅=2
        大=1
        个=1
        ,=3
        中=1
        国=3
        好=1
        是=1
    **练习:消除集合中重复的元素**

        public static void main(String[] args) {
                List list = Arrays.asList(1,2,3,3,4,4,5,5,6,1,9,3,25,4);
                HashSet<Integer> hashSet = new HashSet<>();
                hashSet.addAll(list);
                for (Integer integer : hashSet) {
                    System.out.println(integer);
                }
        }
    结果:

        1
        2
        3
        4
        5
        6
        9
        25
    **练习:找出数组中的一个值,使其左侧值的和等于右侧值的加和,例如:1,2,5,3,2,4,2,结果为第四个值。**
        

        public static void main(String[] args) {
                int[] arr = new int[] {1,2,5,3,2,4,2};//1,2,5,3,2,4,2,9,2,1,7,6,3
                int targetIndex=0;
                for (int i = 0; i < arr.length; i++) {
                    int leftSum=0;
                    int rightSum=0;
                    for (int j = 0; j < targetIndex; j++) {
                        leftSum += arr[j];
                    }
                    for (int j = targetIndex+1; j < arr.length; j++) {
                        rightSum+=arr[j];
                    }
                    if(leftSum == rightSum) {
                        break;
                    }
                    targetIndex++;
                }
                if(targetIndex == arr.length) {
                    System.out.println("未找到这样的数值");
                }else {
                    System.out.println("目标下标:" + targetIndex + "对应的值:" + arr[targetIndex]);
                }
        }
    结果为:目标下标:3对应的值:3

    **练习:**
    请编写一个 Application
    实现如下功能:从控制台给出的一个字母串,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String string = scanner.next();
        char first = string.charAt(0);
        int intf = (int)first;
        System.out.println("第一个字母大小为:" + intf);
        if(intf >= 65 && intf <= 90) {
            int count = 0;
            for (int i = 0; i < string.length(); i++) {
                char charAt = string.charAt(i);
                int intChar = (int)charAt;
                if(intChar >= 65 && intChar <= 90) {
                    count++;
                    System.out.print(charAt + " ");
                }
            }
            System.out.println(count);
        }else {
            System.out.println("第一个字母不是大写字母!");
        }
    运行结果:
    请输入一个字符串:

        ABCabcdBC
        第一个字母大小为:65
        A B C B C 5

    **练习:**
    一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。        

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String string = scanner.next();
        String back;
        int index= string.length() - 1;//4-1=3
        char[] charArray = new char[index + 1];
        for (int i = 0; i < string.length(); i++) {
            char charAt = string.charAt(i);
            charArray[index - i] = charAt;
        }             //3  0123
        String string2 = new String(charArray);
        System.out.println("字符个数为:" + string.length() + "," + string2);

    运行结果:

        请输入字符串:
        sddfgghhj
        字符个数为:9,jhhggfdds
        
    **练习:**
    实现这两个字符串的拼接

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String next1 = scanner.next();
        System.out.println("请输入再次输入字符串:");
        String next2 = scanner.next();
        String concat = next1.concat(next2);
        System.out.println(concat);
    运行结果:

        请输入字符串:
        fdsaf
        请输入再次输入字符串:
        dsfaaf
        fdsafdsfaaf

    **练习:写一个冒泡排序**
    排序思想:
    相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。

    简单来说:
    拿从小到大排序:拿二个数来比大小,大的数拿出来,继续跟后面的数比较大小,继续拿大的数出来这样循环,最后一个数反正是最大的。下一次循环操作类似。

    案例:
    int[] array = {11,5,9,7,3,2};
    最开始数组:11 5 9 7 3 2
    11比5大,拿11:5  11 9 7 3 2
    11比9大,拿11:5 9 11 7 3 2
    11比7大,拿11:5 9 7 11 3 2
    ...
    比完第一轮后:
    5 9 7 3 2 11
    代码参考:

        int[] array = {11,5,9,7,3,2};
        for (int i = 1; i < array.length; i++) {
            if(array[i-1] > array[i]) {
                int temp;
                temp = array[i-1];
                array[i-1] = array[i];
                array[i] = temp;
            }
        }
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

    已经确定11为最大的数,就不拿11继续比较了
    现在要比较的数组:5 9 7 3 2
    和第一轮一样
    拿5和9比,9大,拿9:5 9 7 3 2
    拿9和7比,9大,拿9:5 7 9 3 2
    ...
    第二轮比较:5,7,3,2,9
    第三轮比较:5,3,2,7
    第四轮比较:3,2,5
    ...
    我们可以发现比较的数的形状有点像:
    。。。。。。
    。。。。。
    。。。。
    。。。
    。。

    实现代码:

        int[] array = {11,5,9,7,3,2};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - i; j++) {                
                System.out.print("。");
            }
            System.out.println();
        }
    发现内外循环可以使用上面的操作了,我们可以继续对俩个数进行换位置操作。之前我们学过二个数换位置,所以附上代码:

        if(小的数变量 > 大的数变量) {
            int 临时变量;
            临时变量= 小的数变量;
            小的数变量 = 大的数变量;
            大的数变量= 临时变量;
        }

    放到数组中

        if(array[j-1] > array[j]) {
            int temp;
            temp = array[j-1];
            array[j-1] = array[j];
            array[j] = temp;
        }
    最终代码:

        int[] array = {11,5,9,7,3,2};
        for (int i = 1; i <= array.length; i++) {
            for (int j = 1; j <= array.length - i; j++) {
                if(array[j-1] > array[j]) {
                    int temp;
                    temp = array[j-1];
                    array[j-1] = array[j];
                    array[j] = temp;
                }
            }
        }
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
        }
    好了冒泡排序完成

  • 相关阅读:
    时间比较
    syslog 协议及其在 SysLogHandler 中的使用
    获取 postgresql 的当前索引
    dns域名解析
    wireshark
    ctypes使用
    python模块signal
    ThreadPoolExecutor多线程异步执行
    异步进程 multiprocessing 模板
    redis常见错误
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812034.html
Copyright © 2011-2022 走看看