java - "Unresolved compilation pro..."异常错误

标签 java exception compiler-errors

我编写这段代码是为了显示给定人群之间的稳定婚姻及其偏好。我相信我的代码是完整的,但是我收到了错误

“线程“main”java.lang.Error中出现异常: Unresolved 编译问题:在StableMarriage.main(StableMarriage.java:26)”

该错误列在 main 方法开始的第 20 行,我认为该错误是由于读取数组时出现问题造成的,但我不确定如何修复它。

public class StableMarriage {
static List<String> men = Arrays.asList(
        new String[] {"John", "Robert", "Brian", "Stephen", "George"});
static List<String> women = Arrays.asList(
        new String[]{"Nancy", "Joyce", "Patricia", "Anne", "Susan"});
static Map<String, List<String>> menChoose = new HashMap<String, List<String>>(){{
    put("John", Arrays.asList("Susan", "Joyce", "Nancy", "Patricia", "Anne"));
    put("Robert", Arrays.asList("Nancy", "Anne", "Joyce", "Susan", "Patricia"));
    put("Brian", Arrays.asList("Patricia", "Susan", "Joyce", "Anne", "Nancy"));
    put("Stephen", Arrays.asList("Joyce", "Anne", "Susan", "Nancy", "Patricia"));
    put("George", Arrays.asList("Nancy", "Joyce", "Patricia", "Susan", "Anne"));
}};
static Map<String, List<String>> womenChoose = new HashMap<String, List<String>>(){{
    put("Nancy", Arrays.asList("John", "Brian", "Stephen", "Robert", "George"));
    put("Joyce", Arrays.asList("George", "John", "Stephen", "Robert", "Brian"));
    put("Patricia", Arrays.asList("George", "Brian", "Robert", "Stephen", "John"));
    put("Anne", Arrays.asList("George", "Stephen", "John", "Brian", "Robert"));
    put("Susan", Arrays.asList("Brian", "George", "Stephen", "John", "Robert"));
}};
public static void main(String[] args) throws Exception {
    File ();

    Map<String, String> matches = match(men, menChoose, womenChoose);
    for(Map.Entry<String, String> couple:matches.entrySet())
        System.out.println(couple.getKey() + " engaged to " + couple.getValue());
    if(checkMatches(men, women, matches, menChoose, womenChoose)) {
        System.out.println("Stable Matches");
    } else {
        System.out.println("Unstable");
    }
    String tmp = matches.get(women.get(0));
    matches.put(women.get(0), matches.get(women.get(1)));
    matches.put(women.get(1), tmp);
    System.out.println(women.get(0) + " and " + women.get(1) + " have switched partners");
    if(checkMatches(men, women, matches, menChoose, womenChoose)) {
        System.out.println("Stable");
    } else {
        System.out.println("Unstable");
    }
}
private static Map<String, String> match(List<String> men2,
        Map<String, List<String>> menChoose2,
        Map<String, List<String>> womenChoose2) {
    return null;
}
public static Map<String, String> match(List<String> men, Map<String, List<String>> menChoose, Map<String>> womenChoose) {
    Map<String, String> engagedTo = new TreeMap<String, String>();
    List<String> freeMen = new LinkedList<String>();
    freeMen.addAll(men);
    while(!freeMen.isEmpty()){
        String currentMan = freeMen.remove(0);
        List<String> manPrefers = menChoose.get(currentMan);
        for(String woman:manPrefers){
            if(engagedTo.get(woman) == null) {
                engagedTo.put(woman, currentMan);
                break;
            } else {
                String otherMan = engagedTo.get(woman);
                List<String> womanPrefers = womenChoose.get(woman);
                if(womanPrefers.indexOf(currentMan) < womanPrefers.indexOf(otherMan)) {
                    engagedTo.put(woman, currentMan);
                    freeMen.add(otherMan);
                    break;
                }
            }
        }
    }
    return engagedTo;
}
private static boolean checkMatches(List<String> men, List<String> women, Map<String, String> matches,
        Map<String, List<String>> menChoose, Map<String, List<String>> womenChoose) {
    if(!matches.keySet().containsAll(women))
        return false;
    if(!matches.values().containsAll(men))
        return false;

    Map<String, String> invertedMatches = new TreeMap<String, String>();
    for(Map.Entry<String, String> couple:matches.entrySet())
        invertedMatches.put(couple.getValue(), couple.getKey());

    for(Map.Entry<String, String> couple:matches.entrySet()) {
        List<String> shePrefers = womenChoose.get(couple.getKey());
        List<String> sheLikes = new LinkedList<String>();
        sheLikes.addAll(shePrefers.subList(0, shePrefers.indexOf(couple.getKey())));
        List<String> hePrefers = menChoose.get(couple.getValue());
        List<String> heLikes = new LinkedList<String>();
        heLikes.addAll(hePrefers.subList(0, hePrefers.indexOf(couple.getKey())));

        for(String man:sheLikes) {
            String manWife = invertedMatches.get(man);
            List<String> manPrefers = menChoose.get(man);
            if(manPrefers.indexOf(manWife) > manPrefers.indexOf(couple.getKey())) {
                System.out.printf("%s likes %s better than %s and %s likes %s better than their current partner \n",
                        couple.getKey(), man, couple.getValue(), man, couple.getKey());
                return false;
            } 
        }
        for(String woman:heLikes) {
            String sheHusband = matches.get(woman);
            List<String> womanPrefers = womenChoose.get(woman);
            if(womanPrefers.indexOf(sheHusband) > womanPrefers.indexOf(couple.getValue())) {
                System.out.printf("%s likes %s better than %s and %s like %s better than their current partner \n",
                        couple.getValue(), woman, couple.getKey(), woman, couple.getValue());
                return false;
            }
        }
    }
    return true;
}

最佳答案

这个异常......

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
           at StableMarriage.main(StableMarriage.java:26)"

...发生的原因是您忽略了代码中的一些编译错误并继续运行该程序。某些 IDE(例如 Eclipse)允许您执行此操作。这是一个坏主意。

返回到您的 IDE 并更改首选项以防止将来发生这种情况。 Eclipse 首选项位于启动器首选项中:在“运行/调试 > 启动”首选项页面中查找“如果项目包含错误则继续启动”。

然后找到并修复编译错误。

关于java - "Unresolved compilation pro..."异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26208814/

相关文章:

java - 我可以保存一个巨大的 PNG 而不是整个东西都在内存中吗?

java - 更改 gradle 构建 jar 中的资源目标目录

c# - 何时检查 InnerException

ruby-on-rails - 如何将实例发送到 Rails 中的部分

java - 编译Java代码时找不到符号

java - 从 servlet 读取 xml 文件

java - 在 Xtext 编辑器中实现不区分大小写

c++ - 在c++异常结构中的函数声明后抛出()?

Java 8 - 流 - 过滤器中的方法有未处理的异常,try catch 期待返回语句

c++ - 在C++中使用变量而不是 `#define`指定数组大小是否不好? (C错误: variably modified at file scope) [closed]