Java 无法解析Map.Entry和lambda表达式

Java 无法解析Map.Entry和lambda表达式,java,Java,我不知道我做错了什么。在EclipseLuna上甚至在CMD上使用带有lambda表达式“entry cannot resolved”的ForEach() Map<Character, Integer> map = new HashMap<>(); while(sc.hasNextLine()) { String str = sc.nextLine().replaceAll("\\s+", "").replace

我不知道我做错了什么。在EclipseLuna上甚至在CMD上使用带有lambda表达式“entry cannot resolved”的ForEach()

Map<Character, Integer> map = new HashMap<>();
        while(sc.hasNextLine()) {          
            String str = sc.nextLine().replaceAll("\\s+", "").replaceAll("\\r\\n+", "");
            char[] arr = str.toCharArray();  
            len += arr.length;                

           for(int i = 0; i < len; i++){
                char ch = str.charAt(i);
                if(map.containsKey(ch))          
                   map.put(ch, map.get(ch) + 1); 
                else
                    map.put(ch, 1);                 
           }

            map.entrySet().stream()
            .sorted(Map.Entry. <Character, Integer> comparingByValue().reversed())
            .limit(5)
            .forEach(entry -> System.out.printf("'%c' : %d%n", entry.getKey(), entry.getValue()));
Map Map=newhashmap();
而(sc.hasNextLine()){
字符串str=sc.nextLine().replaceAll(“\\s+”,”).replaceAll(“\\r\\n+”,”);
char[]arr=str.toCharArray();
len+=阵列长度;
对于(int i=0;iSystem.out.printf(“%c”:%d%n”,entry.getKey(),entry.getValue());

在字符串中包含5个字符且空格不超过5个字符之前,它会向我显示以下异常

线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:6 位于java.lang.String.charAt(String.java:658) 在com.rmi.service.imp.MyServcieImp.main(MyServcieImp.java:29)

这是你的密码

`公共类MyServcieImp{

public static void main(String[] args) {


    Scanner sc= new Scanner(System.in);
    int len=0;
    Map<Character, Integer> map = new HashMap<>();
    while(sc.hasNextLine()) {          
        String str = sc.nextLine().replaceAll("\\s+", "").replaceAll("\\r\\n+", "");
        char[] arr = str.toCharArray();  
        len += arr.length;                

       for(int i = 0; i < len; i++){
            char ch = str.charAt(i);
            if(map.containsKey(ch))          
               map.put(ch, map.get(ch) + 1); 
            else
                map.put(ch, 1);                 
       }

        map.entrySet().stream()
        .sorted(Map.Entry. <Character, Integer> comparingByValue().reversed())
        .limit(5)
        .forEach(entry -> System.out.printf("'%c' : %d%n", entry.getKey(), entry.getValue()));
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int len=0;
Map Map=newhashmap();
而(sc.hasNextLine()){
字符串str=sc.nextLine().replaceAll(“\\s+”,”).replaceAll(“\\r\\n+”,”);
char[]arr=str.toCharArray();
len+=阵列长度;
对于(int i=0;iSystem.out.printf(“%c”:%d%n”,entry.getKey(),entry.getValue());
}
}
}`

你想要什么?打印超过5张还是什么

如果您想打印所有字符串长度,只需替换

charch=str.charAt(i);

map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
.限额(5)
.forEach(entry->System.out.printf(“%c”:%d%n”,entry.getKey(),entry.getValue());

char ch=arr[i];

map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
.limit(map.size())
.forEach(entry->System.out.printf(“%c”:%d%n”,entry.getKey(),entry.getValue());


并打印所需内容。:

无法使用Dcoder(Android设备的IDE)进行复制-对我来说不会导致编译器错误。请尝试。这是重复的字符计数。无法打印整个字符串长度。此“条目”的问题无法解决。请参阅线程“main”中的输出:异常java.lang.Error:未解决的编译问题:无法将条目解析为标记“-”上的变量语法错误,--预期条目无法解析条目无法解析请以代码形式向我提供您的输入和异常输出,以便于通知它/**输入行/文件f=新文件(“这三个人确实喂了鹿,敏捷的棕色狐狸跳过了懒狗”);Scanner sc=new Scanner(f);/*下面是控制台输出*/线程“main”中的异常“java.lang.Error:未解决的编译问题:无法将条目解析为标记“-”上的变量语法错误”,--预期的条目无法解析条目无法解析您需要从文件或控制台获取输入我尝试从控制台获取以下结果
这三个人确实喂了鹿敏捷的棕色狐狸跳过了懒惰的狗
输出:
'e':12'd':6'h':5'o':4'r':4't':3't':2'f':2'i':2'u':2'a':1'b':1'c':1'g':1'j':1'k':1'l':1'm':1'n':1'p':1'q':1'v':1'w':1'x':1'y':1'z':1