首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >而不是类Vectors java的实例

而不是类Vectors java的实例
EN

Stack Overflow用户
提问于 2016-05-14 16:37:01
回答 3查看 388关注 0票数 0

我想知道如何检查向量中的元素是否不是类的实例。假设向量m中的元素存在于类中,则增加和。如果i不是类的实例,那么我们返回-1。这是我的代码:

代码语言:javascript
复制
public static int CountHighs(Vector m) {
    int sum = 0;
    for (int i = 0; i < m.size(); i++) {
        try {
            if (m.get(i) instanceof HighRights) {
                sum += 1;
            } else if ((!m.get(i) instanceof Highrights) || (!m.get(i) instanceof LowRights)) {
                sum = -1;
            }
        } catch (NullPointerException E) {
            System.out.println("Error");
            System.exit(0);
            return 0;
        }
        return sum;
    }
}

我用过接线员"!“这里对被访者有利。

!m.gets会导致错误。我想知道是否有一种方法来说明元素是否不是这个类的实例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-14 16:46:30

在Java中,一元运算符(如!)比关系运算符(如instanceof)具有更高的优先级(详见官方教程 )。因此,Java首先尝试解释!m.get(i),但失败了,因为m.get(i)不返回布尔值。为了解决这个问题,您应该使用括号首先使instanceof评估:

代码语言:javascript
复制
else if (!((m.get(i) instanceof Highrights) || (m.get(i) instanceof LowRights))) {
票数 2
EN

Stack Overflow用户

发布于 2016-05-14 16:44:39

只需将此(!m.get(i) instanceof Highrights)更改为此!(m.get(i) instanceof Highrights)即可。实际上,!boolean值的运算符,但在这里,m.get(i)不返回boolean,而是返回对象,因此它不编译,因此需要将它放在父代之外,以获得测试x instanceof y的负值。

所以最后的测试是!(m.get(i) instanceof Highrights) || !(m.get(i) instanceof LowRights)

NB:,您的测试在else if中,这意味着以前的if失败了,所以您已经知道m.get(i) instanceof HighRightsfalse,所以您的测试将永远是true,所以我认为您的测试应该是else if (!(m.get(i) instanceof LowRights))

票数 1
EN

Stack Overflow用户

发布于 2016-05-14 16:56:28

只要做:

代码语言:javascript
复制
else if(!(m.get(i) instanceof LowRights))

我还格式化了您的其余代码,并取出了不必要的检查:

代码语言:javascript
复制
else if(!(m.get(i) instanceof Highrights))

括号将整个语句视为一个boolean,然后您可以用一个!否定这一点。此外,由于您使用的是else if,这意味着m.get(i)不能是HighRights的实例,因此没有必要进行检查,所以您的最终代码如下所示:

代码语言:javascript
复制
public static int CountHighs (Vector m) {
    int sum=0;
    for(int i=0; i<m.size();i++){   
        try{
            if(m.get(i) instanceof HighRights){   
            sum+=1;
        }
        else if(!(m.get(i) instanceof LowRights)){   
            sum=-1;
        }
        catch(NullPointerException E){
            System.out.println("Error");
            System.exit(0);
            return 0;
        }
    }
    return sum;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37229240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档