检查布尔数组中的值(Java)

检查布尔数组中的值(Java),java,arrays,boolean,Java,Arrays,Boolean,我在以下问题上有点困难 我已经初始化了一个名为numberArray的布尔数组,它有31个索引。用户应该输入1到30之间的5个数字,每次输入一个数字时,程序应该将正确的索引设置为true。例如,如果输入5,则: numberArray[5]=真 但是,如果用户第二次输入值5,则应向用户发送一条消息,说明该数字已输入,因此用户必须选择不同的值。我尝试创建一个循环,如下所示: public void enterArrayValues() { for(int i = 1; i < 6;

我在以下问题上有点困难

我已经初始化了一个名为numberArray的布尔数组,它有31个索引。用户应该输入1到30之间的5个数字,每次输入一个数字时,程序应该将正确的索引设置为true。例如,如果输入5,则:

numberArray[5]=真

但是,如果用户第二次输入值5,则应向用户发送一条消息,说明该数字已输入,因此用户必须选择不同的值。我尝试创建一个循环,如下所示:

public void enterArrayValues() {
    for(int i = 1; i < 6; i++) {
        System.out.print("Give " + i + ". number: ");
        int enteredNumber = input.nextInt();
        while (numberArray[enteredNumber] = true) {
            System.out.println("This number has already been chosen.");
            System.out.print("Give " + i + ". number again: ");
            enteredNumber = input.nextInt();
        }
        numberArray[enteredNumber] = true;
    }
}
public void enteraryvalues(){
对于(int i=1;i<6;i++){
系统输出打印(“给出”+i+”。编号:);
int enteredNumber=input.nextInt();
while(numberArray[enteredNumber]=true){
System.out.println(“此号码已被选中。”);
系统输出打印(“再次给出“+i+”。编号:”);
enteredNumber=input.nextInt();
}
numberArray[输入的数字]=真;
}
}
问题是,当我运行程序时,无论我输入什么,我都会自动得到消息“号码已被选择”。即使是我第一次输入数字。我不明白。默认情况下,布尔数组中的所有值不是都为false吗

如果有人能帮我,我将不胜感激

while (numberArray[enteredNumber] = true) 
如果是赋值,请使用
=
运算符,或只使用
while(numberArray[enteredNumber])


我知道在你还在学习的时候很难进入,但是你越早开始在IDE中编码,你的境况就会越好。这是IDE警告您的一个小例子。

将while行更改为:

while (numberArray[enteredNumber]) {
因为错误地输入
=
而不是
=
是一个常见的错误,所以有些人总是以以下方式对此类语句进行编码:

while (true == numberArray[enteredNumber]) {
使用此格式时,如果使用
=
而不是
=
,则会出现编译器错误

另外,如果您使用一种静态分析工具,如PMD,我相信您会收到一条关于您最初编写的语句的警告

while (numberArray[enteredNumber] = true) {
那样做

while (numberArray[enteredNumber] == true) {
或者换成

while (true == numberArray[enteredNumber]) {
或者干脆删除
==true

while (numberArray[enteredNumber]) {

问题是在while循环的情况下-您正在使用赋值运算符(=),而您应该使用相等比较器(=)。这样,循环条件始终为true,因为您正在为索引字段指定true。
我希望这能起作用:-)。

while循环中的条件应该是
while(numberArray[enteredNumber]==true)
。您使用的是赋值运算符
=
,而不是比较运算符
=
。赋值是一个返回赋值的表达式,在您的例子中为
true

如果这是作业,您可能应该这样标记它。好的。将来会这样做的!对这正是我的问题所在。我犯了愚蠢的错误!对我犯了愚蠢的错误!非常感谢:)