Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔数组比较Java_Java - Fatal编程技术网

布尔数组比较Java

布尔数组比较Java,java,Java,我创建了一个名为Iset的类,该类接受整数,并将其布尔数组的索引修改为true e、 g.如果我传递一个整数1,那么布尔数组setI[1]将变为true 我有一个名为include的方法,如果提供的整数在其中,则返回true;如果不在其中,则返回false。然而,无论我做什么,我总是得到正确的。我已经确保数组中的所有内容都设置为false,并在代码的后面添加了一个数字。显然,我在这里遗漏了一些非常明显的东西: public class Iset { public int size;

我创建了一个名为Iset的类,该类接受整数,并将其布尔数组的索引修改为true

e、 g.如果我传递一个整数1,那么布尔数组
setI[1]
将变为true

我有一个名为
include
的方法,如果提供的整数在其中,则返回true;如果不在其中,则返回false。然而,无论我做什么,我总是得到
正确的
。我已经确保数组中的所有内容都设置为false,并在代码的后面添加了一个数字。显然,我在这里遗漏了一些非常明显的东西:

public class Iset {
    public int size;
    boolean[] setI;

    Iset(int a) {
        this.size = a;
        this.setI = new boolean[size];
    }

    public boolean include(int i) {
        for (int n = 0; n <= size; n++) {
            if (setI[n]== setI[i]){
                return true;
            }
        }
        return false;
    }
}
公共类Iset{
公共整数大小;
布尔[]集;
Iset(INTA){
这个尺寸=a;
this.setI=新布尔值[size];
}
公共布尔包含(int i){

对于(int n=0;n您不必遍历整个数组,只要询问方法是否包含您的数字

public boolean isIncluded(int i) {
    if (setI[i] == true){
        return true;
    }
    return false;
}
或者更简单:

public boolean isIncluded(int i) {
    return setI[i];
}
另外,我将您的方法名称更改为更有意义的名称

尝试以下操作:

public boolean include(int i) {
    if (i >= size){
        // To avoid ArrayIndexOutOfBoundsException
        return false;
    }
    return setI[i];
}

我不完全确定您的目的是什么,但是,在you for循环中,当
n==I
时,您正在进行自我比较,因此总是返回true。

其他答案已经给出了解决方案,但我想我们也可以得到解释,解释一下为什么您的原始代码像您所说的那样略有错误。以下是您的include()方法正在伪代码中执行:

for each boolean called 'setI[n]' in the array:
    if 'setI[n]' is the same as the boolean at 'setI[i]':
        return true
因此,它实际上不是检查这些布尔值是否为真,而是检查它们是否相同。此方法将始终返回真,除非索引
i
处的布尔值是数组中唯一具有其值的值(我建议尝试一下,看看我是否正确)。例如,如果
i=1
您的方法将返回
true

[false, true, false, false, ...]
[true, false, true, true, ...]
…没有其他价值观


希望这能让事情变得更清楚一些。

请尝试这段代码,我认为您应该添加一个funktion:set(),并对include(int I)进行一些更改


}setI的类型是什么?
大小是什么?
向我们展示填充setI的代码
获取整数并将其存储在布尔数组中
你应该重新思考一下。整数数组是什么?你为什么要将整数存储在
布尔数组中?你到底是怎么做的?@Rohit I制作了ed它…声明“在布尔数组中存储整数”
包含的内容可能更好,因为这是集合API中使用的内容。一般来说是的,但我们不知道上下文是什么,可能是“包含”更有意义;)这是一个非常直截了当的方法。问题是,当我对某件事想得太多时,我最终会把它变得越来越复杂。谢谢你谢谢你强化了我提出的想法。现在有了更多的意义。
public class Iset {
public int size;
boolean[] setI;

Iset(int a) {
    this.size = a;
    this.setI = new boolean[size];
}

public boolean include(int i) {

    return setI[i];
}

    //set your values in the boolean array "setI" to "true" 

public void set(int... values) {

    for (int i : values) {
        setI[i] = true;

    }

}

public static void main(String[] args) {

    Iset mm = new Iset(100);

    mm.set(25, 40, 22);

    System.out.println(mm.include(25));

}