繁体   English   中英

不兼容的类型编译错误

[英]Incompatible type compile error

我的代码错误的链接 在此处输入图片说明

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

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

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

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

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

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

(暗示:

  1. 使用m.size()获得向量m中的元素数
  2. 使用关键字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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM