不是java类的实例

不是java类的实例,java,vector,syntax-error,instanceof,Java,Vector,Syntax Error,Instanceof,我想知道如何检查向量中的元素是否不是类的实例。 这种情况是,如果向量m中的元素存在于一个类中,则我们增加了sum。如果i不是该类的实例,则返回-1。这是我的密码: public static int CountHighs(Vector m) { int sum = 0; for (int i = 0; i < m.size(); i++) { try { if (m.get(i) instanceof HighRights) {

我想知道如何检查向量中的元素是否不是类的实例。 这种情况是,如果向量m中的元素存在于一个类中,则我们增加了sum。如果
i
不是该类的实例,则返回-1。这是我的密码:

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;
    }
}
public static int CountHighs(向量m){
整数和=0;
对于(int i=0;i
为了受访者的利益,我在这里使用了运算符“!”

!m、 获取导致错误的
。我想知道是否有一种方法可以说明元素是否不是此类的实例。

只需将此
(!m.get(I)instanceof Highrights)
更改为此
!(m.get(i)高权限实例)
。的确是
是一个用于
布尔值的运算符,但这里
m.get(i)
不返回
布尔值,而是一个对象,因此它不会编译,因此您需要将它放在父项之外,以获取测试的负值
x instanceof y

所以最后的测试是
!(m.get(i)高权限实例)| | |!(m.get(i)低权限实例)

NB:这里您的测试是在
else if
中进行的,这意味着前面的
if
失败,因此您已经知道
m.get(i)instanceof HighRights
false
,这样您的测试将
!(m.get(i)高权限实例)| | |!(m.get(i)低权限实例)
将始终是
正确的
,因此我认为您的测试应该是
,否则如果(!(m.get(i)低权限实例))

只需更改此
(!m.get(i)高权限实例)
!(m.get(i)高权限实例)
。的确是
是一个用于
布尔值的运算符,但这里
m.get(i)
不返回
布尔值,而是一个对象,因此它不会编译,因此您需要将它放在父项之外,以获取测试的负值
x instanceof y

所以最后的测试是
!(m.get(i)高权限实例)| | |!(m.get(i)低权限实例)

NB:这里您的测试是在
else if
中进行的,这意味着前面的
if
失败,因此您已经知道
m.get(i)instanceof HighRights
false
,这样您的测试将
!(m.get(i)高权限实例)| | |!(m.get(i)instanceof lowrits)
将始终是
真的
,因此我认为您的测试应该是
,否则如果在Java中(!(m.get(i)instanceof lowrits))
一元运算符(例如
)比关系运算符(例如
instanceof
)具有更高的优先级(有关详细信息,请参阅)。所以Java试图解释
!m、 首先获取(i)
并失败,因为
m.get(i)
不返回布尔值。为了解决此问题,应使用括号首先计算
实例的值:

else if (!((m.get(i) instanceof Highrights) || (m.get(i) instanceof LowRights))) {
Java中一元运算符(如
)的优先级高于关系运算符(如
instanceof
)(有关详细信息,请参阅)。所以Java试图解释
!m、 首先获取(i)
并失败,因为
m.get(i)
不返回布尔值。为了解决此问题,应使用括号首先计算
实例的值:

else if (!((m.get(i) instanceof Highrights) || (m.get(i) instanceof LowRights))) {
只要做:

else if(!(m.get(i) instanceof LowRights))
我还格式化了您的其余代码,并进行了不必要的检查:

else if(!(m.get(i) instanceof Highrights))
括号将把整个语句视为一个
布尔值,然后你可以用
来否定它。另外,由于您使用了
else if
,这意味着
m.get(i)
不能是
HighRights
的实例,因此无需进行检查,因此最终代码如下所示:

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;
}
public static int CountHighs(向量m){
整数和=0;
对于(int i=0;i只需执行:

else if(!(m.get(i) instanceof LowRights))
我还格式化了您的其余代码,并进行了不必要的检查:

else if(!(m.get(i) instanceof Highrights))
括号将把整个语句视为一个
布尔值
,然后你可以用
来否定它。另外,如果
使用
else,则意味着
m.get(i)
不能是和
HighRights
的实例,因此不需要进行检查,因此最终代码如下所示:

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;
}
public static int CountHighs(向量m){
整数和=0;

对于(int i=0;iSo到底是什么问题?@Mureinik the!m.gets给我造成了一个错误,我想知道是否有一种方法可以说明元素是否不是此类的实例。对于不明确的
catch(NullPointerException E)表示歉意
什么?而那个块甚至没有做任何有用的事情。@duldi你得到了什么错误?你有没有想过使用括号?比如
!(m.get(i)instanceof Highrights))
…那么到底是什么问题?@Mureinik the!m.get导致了我一个错误,我想知道是否有一种方法可以说明元素是否不是此类的实例。对于不明确的
捕获(NullPointerException E)表示歉意
什么?那个块甚至没有什么用处。@duldi你犯了什么错误?你有没有想过使用括号?比如
!(m.get(i)instanceof Highrights))
…谢谢你,我想知道为什么会有这么大的不同,谢谢你的帮助这是错误的!(a | | B)=>!A&&!B这不是OP想要的,就像Nicolas提到的,当你从表达式中提取否定时,你需要使用
&&
而不是
|
。谢谢,我想知道为什么它会有这么大的不同,tha