【问题标题】:Comparator cannot be resolved to a type, what should i do比较器无法解析为类型,我该怎么办
【发布时间】:2019-11-21 21:42:17
【问题描述】:

我想使用内置的比较功能根据特定的方法对字符串进行排序,但是发生了错误。我应该使用什么比较器

VsCode openjdk 版本“1.8.0_191-1-redhat” OpenJDK 运行时环境 (build 1.8.0_191-1-redhat-b12) OpenJDK 64 位服务器 VM(内部版本 25.191-b12,混合模式)

public String[] reorderLogFiles(String[] logs){

    Comparator<String> myComp = new Comparator<String>(){
        //@Override
        public int compare(String s1, String s2){
            int s1si = s1.indexOf(' ');
            int s2si = s2.indexOf(' ');
            char s1fc = s1.charAt(s1si+1);
            char s2fc = s2.charAt(s2si+1);
            if(s1fc<='9'){
                if(s2fc<='9')return 0;
                else return 1;
            }
            if(s2fc<='9')return -1;

            int isNeedChange = s1.substring(s1si+1).compareTo(s2.substring(s2si+1));
            if(isNeedChange == 0)return s1.substring(0,s1si).compareTo(s2.substring(0,s2si));
            return isNeedChange;
        }
    };

    Arrays.sort(logs,myComp);
    return logs;
}

比较器无法解析为类型

【问题讨论】:

  • 如果没有注意@override,还有另一个错误消息:类型new Comparator(){}的方法compare(String, String)必须覆盖或实现超类型方法跨度>
  • 你导入了吗?
  • 什么信息?它没有压倒一切? compare 方法采用 Object 的两个实例,而不是 String 的实例。
  • 我发现我忘记了 import java.util.Comparator;但是为什么 vscode 没有显示问题或自动导入?
  • 什么是vscode?以及为什么要“自动”完成所有操作。那里可能有成千上万个称为 Comparator 的类,您是否希望您的代码自己选择使用哪一个?

标签: java


【解决方案1】:

您是否已导入比较器 API?

如果不是,您的项目是否在构建路径上?也许您必须通过将 src 作为源文件夹来配置构建路径,以便 VsCode 会提示您导入 Comparator。

【讨论】:

  • 已经在 cmets 中声明的 OP 他忘记了导入声明。
【解决方案2】:

两个可能的修复:

1。导入比较器库

将此添加到文件顶部:

import java.util.Comparator;

2。 Java 路径不正确

VS Code 可能正在查看 jre 而不是 JDK。

如何解决:

  1. 点击ctrl + shift + p 调出命令面板。
  2. 输入&gt;Java: Configure Java Runtime 并点击enter
  3. 更改路径以指向您的 JDK 位置。默认位置是C:\Program Files\Java\jdkX.X.X_XXX

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 2011-09-04
    • 2011-05-11
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2018-10-10
    • 2016-06-20
    相关资源
    最近更新 更多