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