不兼容的类型编译错误

时间:2016-03-13 10:46:41

标签: java

我的代码错误enter image description here

的链接
  

不兼容的类型发现java.util.vector需要HighRights。   对不起,我是Java的新手,我只是不明白如何解决这个问题

注意:在本练习中,我们不会使用Generics

在以下程序中,缺少方法CountHighs中的代码。 编写此方法的代码,该方法将向量m和作为参数 返回向量中作为HighRights

实例的对象数

该方法还应该: - 检查从向量中提取的元素是否确实是实例   类HighRightsLowRights。如果元素不是此类的实例,   那么该方法应该返回-1。

  • 在向量为空的情况下处理NullPointerException。使用以下内容 捕获发生的异常时的代码:

    System.out.println("Error");
    System.exit(0);
    return 0;
    

(提示:

  1. 使用m.size()获取向量m
  2. 中的元素数量
  3. 使用关键字instanceof来检查对象是否是类的实例)
  4. 例如,

    • 如果向量m只包含两个HighRights个对象和一个LowRights个对象,那么CountHighs(m)将返回2
    • 如果向量m只包含两个HighRights个对象和一个String个对象,那么CountHighs(m)将返回-1
    • 如果向量m只包含五个LowRights个对象,则没有HighRights个对象,那么CountHighs(m)将返回0

    任何帮助/提示将不胜感激。非常感谢你。

1 个答案:

答案 0 :(得分:1)

你应该发布完整代码(不是图像)和错误堆栈跟踪,但我想我知道这个问题。你有public static int CountHighs(Vector m)方法,在里面检查条件m instanceof HighRights/LowRights - 它永远不会是真的,Vector是Vector,而不是HighRights。您需要检查存储在矢量中的对象是HighRights还是LowRights。为此,您应该使用循环:

for(Object obj : m){ //it will iterate over the vector `m`, with each iteration `obj` will be the next element
    if(obj instanceof HighRights){
        ++countHighRights;
    }
    else if(obj instanceof LowRights){
        //do nothing - you should only count HighRights
    }
    else{ //obj is neither HighRight nor LowRight
        return -1;
    }
}