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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 HML 于 2014-7-25 22:55 编辑

以下是小菜我编写的程序,(统计A、B、C、D的出现次数,并由高到低输出字母和出现次数),我自己看的都觉得繁琐,肯定不是最佳的答案,我曾像用一个函数封装一个循环体:
    for (int i = 0; i < sizeof(nums)/sizeof(int); i++) {
        if ((nums[0] == nums[1] == 0) && (nums[2] == nums[3] == 0)) {

            printf("A出现的0次\n");
            printf("B出现的0次\n");
            printf("C出现的0次\n");
            printf("D出现的0次\n");
            return 0;
        }
    }
但是我失败了,这样会报错,我也单独拿出来测试过,没测出来错误。
请大虾,帮帮小菜检查一下,黑马币哦(技术分哦);
这程序有个致命的缺陷,我自己也苦逼了好久,那就是如果A、B、C、D都出现了n次(0除外),拿程序结果就只会输出:A出现的次数是:n代码在附件中,因为,直接写在这里面,字节数超1000了,很繁琐的代码,求大虾精简在精简。

19 个回复

倒序浏览
代码在附件里面。。
回复 使用道具 举报

  1. import java.io.*;
  2. public class Sunday {
  3.         public static void main(String[] args)throws IOException{
  4.                
  5.                 File file=new File("———此处为文件的目录—————");//文件自己选
  6.                 demo(file);
  7.         }
  8.         public static void demo(File file) throws IOException{
  9.                 FileReader fr=new FileReader(file);  //需要读文件,所以定义了一个读入类。
  10.                 int ch=0;
  11.                 int[] arr=new int[4];
  12.                 while((ch=fr.read())!=-1){
  13.                         char c=(char)ch;
  14.                         switch(c){
  15.                                 case 'a':
  16.                                         arr[0]++;
  17.                                         break;
  18.                                 case 'b':
  19.                                         arr[1]++;
  20.                                         break;
  21.                                 case 'c':
  22.                                         arr[2]++;
  23.                                         break;
  24.                                 case 'd':
  25.                                         arr[3]++;
  26.                                         break;               
  27.                         }
  28.                 }
  29.                 char[] chs={'a','b','c','d'};
  30.                 for(int i=0;i<arr.length;i++){
  31.                         System.out.println(chs[i]+"出现了"+arr[i]+"次");
  32.                 }
  33.         }
  34. }
复制代码
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……

点评

HML
给力,思路清晰。简单明了,很强大啊  发表于 2014-7-26 12:16
回复 使用道具 举报
给你说一个笨方法,吧字符串复制两份,用两个for嵌套,比较一个字符在另一个字符串中出现的次数,然后记下,放进一个TreeSet集合,以字符串方式放入treeset集合,例如A(2),B(3)....,我就不代码体现了,实在想不出来,我给你代码,
回复 使用道具 举报
wisely 发表于 2014-7-25 23:49
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……
...

你太强悍了,,我在写思路时还没有,刚写完,提交,你就已经上代码了,,服了,,,
回复 使用道具 举报
rekirt 发表于 2014-7-25 23:52
你太强悍了,,我在写思路时还没有,刚写完,提交,你就已经上代码了,,服了,,, ...

看了兄弟的提示,我才发现这个题目貌似跟毕老师视频里的一个题目很像,集合里,具体是哪个集合类忘了……
回复 使用道具 举报
wisely 发表于 2014-7-25 23:49
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……
...

我能问一下怎样才可以再回复中发表这样的代码段吗?我直接用的是文本,格式太不好看了!
回复 使用道具 举报
wisely 中级黑马 2014-7-26 00:12:42
8#
rolling-stone 发表于 2014-7-26 00:09
我能问一下怎样才可以再回复中发表这样的代码段吗?我直接用的是文本,格式太不好看了! ...

文本框上有个<>符号,点击它就会弹出一个框,在里面输入代码就行了。
回复 使用道具 举报
wisely 中级黑马 2014-7-26 00:15:15
9#
wisely 发表于 2014-7-25 23:49
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……
...

代码有问题,没有实现按次数排序,太晚了,不想再费劲,提供两种思路,不知道行不行得通。
1、二维数组,定义一个二维数组,,不过这里有个问题,那就是数组中存放的元素都是同一种类型
2、map集合
回复 使用道具 举报
wisely 发表于 2014-7-26 00:12
文本框上有个符号,点击它就会弹出一个框,在里面输入代码就行了。

好的,收到,谢谢
回复 使用道具 举报
HML 中级黑马 2014-7-26 12:06:04
11#
wisely 发表于 2014-7-25 23:49
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……
...

哥,我这是C语言基础,map啥语法啊?
回复 使用道具 举报
HML 中级黑马 2014-7-26 12:15:06
12#
wisely 发表于 2014-7-25 23:49
我自己试了一下,感觉还可以。这个代码应该还可以再改,如用map集合,只是个想法……
...

大虾,你这是java吗?我学的是C语言,这题我有做出来,只有太繁琐-代码太多而却不能判别ABCD出现一样的次数,看到你的代码?实在太高兴了,虽然语法不一样。但是你的更精简。使用的循环函数,我都看的懂?谢了
回复 使用道具 举报
毕老师的视频里面讲到集合那里的时候有过相关的例子,关于treemap的
回复 使用道具 举报
HML 中级黑马 2014-7-26 13:28:09
14#
a6511631 发表于 2014-7-26 13:25
毕老师的视频里面讲到集合那里的时候有过相关的例子,关于treemap的

我这视屏里的老师是:李老师。我们不一样啊,好在问题都差不多解决了
回复 使用道具 举报
本帖最后由 hejinzhong 于 2014-7-26 14:00 编辑

提供个思路
treemap集合记录字母和对应出现的次数,最后打印出来就OK
回复 使用道具 举报
HML 中级黑马 2014-7-26 14:03:07
16#
hejinzhong 发表于 2014-7-26 13:54
提供个思路
treemap集合记录字母和对应出现的次数,最后打印出来就OK

好高级,好没学到啊。>_<;
回复 使用道具 举报
HML 发表于 2014-7-26 14:03
好高级,好没学到啊。>_

你学过C?
回复 使用道具 举报
HML 中级黑马 2014-7-26 15:13:31
18#

没有,入门都算不上把
回复 使用道具 举报
HML 中级黑马 2014-7-26 15:14:32
19#

在看IOS零基础开发入门视屏
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马