找出输入的语句中出现次数最多的单词 JAVA

importjava.util.*;importjava.util.StringTokenizer;publicclassFind_themax_word{publics... import java.util.*;
import java.util.StringTokenizer;
public class Find_themax_word {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String str=in.nextLine();
Find(str);
}

public static void Find(String st){
int len=0;
StringTokenizer stp = new StringTokenizer(st);
String []array=new String[stp.countTokens()];
int []ar=new int[stp.countTokens()];
/*for(int p=0;p<stp.countTokens();p++)
ar[p]=0;*/
while(stp.hasMoreTokens()){
String key=stp.nextToken();
array[len]=key;
len++;
}
System.out.print(len);
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(array[i].equals(array[j])){
ar[i]++;}}

//System.out.print(array[i]);}}
}

int max=0; String sta=" ";
for(int k=0;k<stp.countTokens();k++){
if(ar[k]>=max){
max=ar[k];
sta=array[k];
}
}
System.out.print(sta);

}}

我觉得是对的,但是就是不显示结果,初学JAVA求各位大神指点
展开
 我来答
小童鞋_成er
2014-07-04 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部

您好,提问者:
    你写的好复杂的说,可以使用HashMap啊,例如如下代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) throws Exception {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        char ch = getMaxChar(str);
        System.out.println("出现最多的是:"+ch);
    }
    private static char getMaxChar(String str){
        char[] arr = str.toCharArray();
        Map<Character,Integer> map = new HashMap<Character,Integer>();
        int maxValue = 0;
        char maxKey = 0;
        for(int i = 0; i < arr.length; i++){
            Integer num = map.get(arr[i]);
            if(num==null)
                map.put(arr[i], 1);
            else{
                map.put(arr[i],++num);
                if(maxValue < map.get(arr[i])){
                    maxValue = map.get(arr[i]);
                    maxKey = arr[i];
                }
            }
        }
        System.out.println(maxKey+":"+maxValue);
        return maxKey;
    }
}

//打印结果:

asdasdasdasdasdasdasd
a:7
出现最多的是:a

流风子云51d37d
推荐于2016-02-06 · TA获得超过498个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:396万
展开全部
for(int k=0;k<stp.countTokens();k++){ //这句话里的stp.countTokens()长度为0,改成
for (int k = 0; k < ar.length; k++) {//就行了
//补充一下,如果里面出现几个单词的数量一样多的都是最大个数,则会打印后出现的那一个。要改的话把sta换成数组来保存就能解决
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
槑槑沧
2014-07-04
知道答主
回答量:12
采纳率:0%
帮助的人:3.7万
展开全部
是JAVA软件工程师孙成 写的那样,不过 他表现的是出现最多的某一个字母,你可以把
char[] arr = str.toCharArray(); 这句换成,按,或是 空格分割
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式