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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 726477179 中级黑马   /  2016-8-12 15:54  /  410 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天问的问题没有人回复,今天自己写了一个程序,但是感觉好臃肿,有没有其他改进方式的?(集合还没学,以一个大数组代替了{:2_31:})
需求如下:
从控制台接收一串字符串,完成以下要求 (共10分)
  a,求出该字符串的长度并输出到控制台,如字符串长度为:X
  b,将该字符串转为数组,判断该数组第一个字符和最后一个字符是否相同,不相同则交换
  c,统计出数组中的每个字符出现的次数,然后自然排序后按指定格式输出到控制台,如  a=3,b=4,c=4,d=3,e=2,f=1
  d,将第二步互换后的数组角标为奇数的字符用”*”号替换,然后遍历输出
        private static void String8() {
                Scanner sc = new Scanner(System.in);
                String s = sc.nextLine();
                char[] c = s.toCharArray();
                System.out.println("字符串长度为:" + c.length);//完成需求a
                if (c[0] == c[c.length - 1]) {                               
                        System.out.println("第一个元素与最后一个元素相同");
                } else {
                        char temp;
                        temp = c[0];
                        c[0] = c[c.length - 1];
                        c[c.length - 1] = temp;
                        System.out.println("第一元素与最后一个元素不同,现已交换");//完成需求b
                }
                int i = 0;
                int a = 0;
                char[] cc = new char[1000];
                int[] aa = new int[1000];
                a: while (i < c.length) {
                        for (int j = 0; j <= i; j++) {             //判断是否是前面出现过的字符,是就该字符对应的计数器+1
                                if (c[i] == cc[j]) {
                                        aa[j]++;
                                        i++;
                                        continue a;
                                }
                        }                                                                        //否则该字符交给另外字符数组的新元素,并让其所对应的计数器+1
                        cc[a] = c[i];
                        aa[a++] = 1;
                        i++;
                }
                for (int j = 0; j < a; j++) {                                //输出需求c
                        System.out.print(cc[j] + "个数是:" + aa[j] + "    ");
                }
                System.out.println();
                for (int j = 1; j < c.length; j += 2) {
                        c[j] = '*';
                }
                for (int j = 0; j < c.length; j++) {                        //需求d
                        System.out.print(c[j] + " ");
                }
        }

评分

参与人数 1黑马币 +3 收起 理由
r1503882525 + 3 提问认真,赞一个

查看全部评分

1 个回复

正序浏览
哭晕在在厕所
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马