0
点赞
收藏
分享

微信扫一扫

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]);

    }

好了冒泡排序完成



举报

相关推荐

0 条评论