检查布尔数组中的值(Java)
我在以下问题上有点困难 我已经初始化了一个名为numberArray的布尔数组,它有31个索引。用户应该输入1到30之间的5个数字,每次输入一个数字时,程序应该将正确的索引设置为true。例如,如果输入5,则: numberArray[5]=真 但是,如果用户第二次输入值5,则应向用户发送一条消息,说明该数字已输入,因此用户必须选择不同的值。我尝试创建一个循环,如下所示:检查布尔数组中的值(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;
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
。如果这是作业,您可能应该这样标记它。好的。将来会这样做的!对这正是我的问题所在。我犯了愚蠢的错误!对我犯了愚蠢的错误!非常感谢:)