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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贺小梅 中级黑马   /  2015-11-29 00:13  /  938 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    今天是2015年11月27日,依旧是忙碌的一天,但是感觉自己敲的代码越来越少了,突然感觉自己不知道该做什么了,感觉java基础视频都看完了,很多的概念的东西还是不太清楚,应该要多记一下这个东西吧,今天还是老样子,又给出了一道题,题目如下:
随机生成一个长度为20的字符串,其中只包含字母,字母区分大小写,最后统计其中出现的字符的个数格式为X(某某字符)(次数)
要求不能使用集合来解这个题,最后还是没想出来这道题,在某个部分的思路是正确的,但是就是在某些地方卡住了,好吧,下面的方法是同学思考出来的,仅供参考:
import java.util.Random;
public class Example {
    public static void main(String[] args) {
       
//         String s="";
//        int count=0;
//        for (int i = 0; i < 20; i++) {
//        count=(int)(Math.random()*((int)('z') + 1));
//                if (!((count>'A'&&count<'Z')||(count>'a'&&count<'z'))) {
//                i=i-1;
//                }else {
//                s+=(char)(count);
//                }
//                }
//
//                System.out.println("生成字符串是:"+s);

        String az="abcdefghijklmnopqrstuvwxyzABCDEFGHIZKLMNOPQRSTUVWXYZ";
        char [] azAz=az.toCharArray();
        Random rd = new Random();
        String str="";

        for(int x=0;x<20;x++){//获取字符串
            int b=rd.nextInt(52);
            str=str+azAz[b];
        }
        System.out.println(str);

        char[] cr = str.toCharArray();
        //获取字符出现的次数
        for (int i = 0; i < cr.length; i++) {
            char s=cr[i];
            int c=0;
            for (int j = 0; j < cr.length; j++) {
                if(cr[i]==cr[j]){
                    c++;
                }
            }
            System.out.print(s+"("+c+")"+",");
        }
    }
}
运行,在控制台打印结果如下:
cIsTnRqisycPNaRSXZgw
c(2),I(1),s(2),T(1),n(1),R(2),q(1),i(1),y(1),P(1),N(1),a(1),S(1),X(1),Z(1),g(1),w(1)

从控制台输出的结果可以看出,实现了题目的要求,
最终只能借鉴别人的解题,不懂就问是一件好事,如果你有更好的解题方法,请记得给我回帖哦~~~
时间不早了,记得早点休息~~

2 个回复

倒序浏览
/*
* 随机生成一个长度为20的字符串,其中只包含字母,字母区分大小写,最后统计其中出现的字符的个数格式为X(某某字符)(次数)
        要求不能使用集合来解这个题
* */
public class test14 {

        public static String makeString() {
                Random ran = new Random();
                StringBuilder sb = new StringBuilder(20);
                while (sb.length()<20) {
                        int ch = ran.nextInt(200);
                        if (('A' < ch && ch < 'Z') || ('a' < ch && ch < 'z'))
                                sb.append((char) ch);
                }
                return sb.toString();
        }

        public static void analyseStr(String str){
                char[] chs=str.toCharArray();
                //临时字符串,用于存储检查过的字符
                String temp="";
                for(int i=0;i<chs.length;i++){
                        //计数变量
                                int count=0;
                                char ch=chs[i];
                                //对新字符进行统计
                                while((temp.indexOf(ch))==-1){
                                        for(int j=i;j<chs.length;j++){
                                                if(chs[j]==ch){
                                                        count++;
                                                }
                                        }
                                        temp+=ch;
                                        System.out.println(ch+" "+count);
                                }
                }
        }
        public static void main(String[] args) {
                analyseStr(makeString());
               
        }
}
回复 使用道具 举报
劲爆对策 发表于 2015-11-29 00:46
/*
* 随机生成一个长度为20的字符串,其中只包含字母,字母区分大小写,最后统计其中出现的字符的个数格式 ...

思路清晰,挺好,真大神~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马