永发信息网

统计一个整数中出现最多的数字。如果数字个数一样则以最大的数字为准,例如1输出1,121输出1,23231输出3

答案:3  悬赏:70  手机版
解决时间 2021-01-19 17:40
统计一个整数中出现最多的数字。如果数字个数一样则以最大的数字为准,例如1输出1,121输出1,23231输出3
最佳答案
int[] b=new int[100];
这时候你会new出来100个零 。 输出岂不是都是零了。 还有,你用的int型存储的,所以不能超过int型最大值。 最好改成string型。 会舒服很多。 可以使用arraylist,不要用定长的数组。追问用Arraylist 怎么用?能简单的说下吗?这个现在没学过,我就一直想要动态数组但不知道追答我按你的思路写一个吧。  虽然这思路很low...  你可以自己想下怎么改良。槽点太多不知道怎么说了。。
public class W3_6 {
    public static void main(String args[]){
        Scanner a=new Scanner(System.in);
        Integer x=a.nextInt();
        String b = x.toString();
        String c[] = b.split("");
        int t = 0;
        int[] num={0,0,0,0,0,0,0,0,0,0};
        for(String d : c){
         if(d.equals("")){
         continue;
         }
         switch(Integer.parseInt(d)){
         case 0:num[0]++;break;
            case 1:num[1]++;break;
            case 2:num[2]++;break;
            case 3:num[3]++;break;
            case 4:num[4]++;break;
            case 5:num[5]++;break;
            case 6:num[6]++;break;
            case 7:num[7]++;break;
            case 8:num[8]++;break;
            case 9:num[9]++;break;
         }
        }
        int max = 0;
        for(int i=0;i         if(max>=num[i]){
         continue;
         }else{
         max = num[i];
         t = i;
         }
        }
        System.out.println(""+t);
        a.close();
    }
}追问我新学java,在上课,也就刚学一点,什么也不懂,老师没上过数组就让我们做习题来了。。。。。追答其实我写的也挺low的。。   随便写了完全没过脑子。   java数组和c还是有点区别的。  很简单,看一眼就知道了,给你个用string的版本。

public static void main(String args[]){
        Scanner a=new Scanner(System.in);
        String b = a.next();
        char c[] = b.toCharArray();
        int t = 0;
        int[] num = new int[10];
        for(char d : c){
         num[d-48]++;
        }
        for(int i=0,max = 0;i         if(max>=num[i]){
         continue;
         }else{
         max = num[i];
         t = i;
         }
        }
        System.out.println(""+t);
        a.close();
    }追问这都已经有点看不懂了。你们java怎么学的,我们老师教的不行,希望能从其他途径学,不然这门课要废了,有推荐吗?还有,那个d-48是什么???冒号char 的:c是什么意思啊??我感觉你有个地方错了,最后的if语句中应该用>而不是>=追答就是自己学学 然后做点东西就ok了。 语言都是共同的。 因为我直接用的char型数据,得到的实际上是ascii码, 0对应的ascii码就是48 也就是说 char 0 实际上表示的是数值 48 所以需要减下去才是表示0, 另外 for( char d : c) 是jdk1.6提供的新的遍历方式, 意思就是取c的每一个元素,然后赋值给d来用。 等价于for( int i = 0,d=0; i<=c.lenght; i ++ ){ d = c[i] }。 另外 >= 和 > 实际上对结果的影响就是 “如果有相同次数的数值的时候,是取后一个还是前一个” 罢了。
实际上应该重新系统学习一下java基础,基础太重要了。你可以试着学习下java scjp,现在叫ocjp好像是。
你每一步debug跟踪下看看就知道是怎么回事儿了
全部回答
for(i=0;i<9;i++)
{ if(num[i]<=num[i+1])
t=num[i+1];
else t=num[i];
}
System.out.println(""+t);
a.close();
这个部分有问题。
不是将 哪个值有多少赋给最后的输出,而是将 谁最多,也就是角标赋给 t
int y=0;
for(i=0;i<10;i++)
{ if(num[i]<=num[y]){
y=y;
}
else y=i;
}
System.out.println(""+y);
另外,你前面用int 接收 输入也不好,应该用string 要不然根本接收不到100位的数字……追问用String怎么做?到后来拆这个数字的时候怎么拆啊?不过前面那个是有错,要改。我用debug调试发现前面部分拆数字后的把b[i]每个都是0
    for(i=0;i                {
                num[b[i]]++;     //简化计数   
            }
               t=0;//最大次数
               x=0;//数
            for(i=0;i<=9;i++)//0-9
                { if(num[i]>=t)
                    {
                    t=num[i];
                   x=i;//当前数
                  }
                }
System.out.println(""+x);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
建筑经济与企业管理
把对方拉倒在地上受伤会判刑吗
"生性"是什么意思啊?
有没有人给我推荐毛坯房装修好一点的漆,谢谢
人活着真累,老了,还去远门挣钱,钱没挣上,
老公要去美国读博士,我要不要跟着一起出去呢
Dresser coupling是什么意思
《三生三世十里桃花》饰演白真的原名叫什么?
我老公以前和他前女友来黄山就住一起的,和我
秦时无文,惟李斯逐客,指的是李斯的
我想在南昌红角洲派出所办个居住证,请有办过
有过你,胡彦斌,唱的歌词
余华有哪些好作品?
有两张图一男一女都说滚
某人在某地呆几天时间用什么词语形容
推荐资讯
为什么奶奶从椅子上站起来腿有点抖呢
这题选a. 解释解释 非常感谢
为啥节后的大盘这个样子?
单选题More high-rise buildings
张睿的女朋友是孙夕尧还是李若希
970m超了一下,大家看一下能打平970吗
一家银行有3亿的利率敏感性资产和2亿的利率敏
请问,在南大考的日语N2,拿证书在南大哪里拿
下列有关北极星的说法,正确的是A.北极星始终
韩文n卜什么字
枫 看见我的袜子了吗 是什么歌里面的歌词啊
YY的帐号忘了,怎么找回来
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?