不兼容的类型发现java.util.vector需要HighRights。 对不起,我是Java的新手,我只是不明白如何解决这个问题
注意:在本练习中,我们不会使用Generics
在以下程序中,缺少方法CountHighs
中的代码。
编写此方法的代码,该方法将向量m和作为参数
返回向量中作为HighRights
该方法还应该:
- 检查从向量中提取的元素是否确实是实例
类HighRights
或LowRights
。如果元素不是此类的实例,
那么该方法应该返回-1。
在向量为空的情况下处理NullPointerException
。使用以下内容
捕获发生的异常时的代码:
System.out.println("Error");
System.exit(0);
return 0;
(提示:
m.size()
获取向量m instanceof
来检查对象是否是类的实例)例如,
HighRights
个对象和一个LowRights
个对象,那么CountHighs(m)
将返回2 HighRights
个对象和一个String
个对象,那么CountHighs(m)
将返回-1 LowRights
个对象,则没有HighRights
个对象,那么CountHighs(m)
将返回0 任何帮助/提示将不胜感激。非常感谢你。
答案 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;
}
}