我的代码错误java - 不兼容的类型编译错误-LMLPHP的链接


找到不兼容的类型java.util.vector需要HighRights。
抱歉,我是Java的新手,我只是不明白该怎么做


注意:在本练习中,我们将不使用泛型

在下面的程序中,方法CountHighs中的代码丢失。
编写此方法的代码,该方法将向量m和
返回向量中作为HighRights实例的对象数

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


如果向量为null,则处理NullPointerException。使用以下
捕获发生的异常时的代码:

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



(暗示:


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


例如,


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


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

最佳答案

您应该发布完整的代码(而不是图像)和错误堆栈跟踪,但是我想我知道问题所在。您有一个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;
    }
}

关于java - 不兼容的类型编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35969266/

10-12 06:16