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

时间:2011-10-08 12:38:32

标签: java arrays boolean

我对以下问题感到轻微困难。

我初始化了一个名为numberArray的布尔数组,其中包含31个索引。用户应该在1到30之间输入5位数,并且每次输入数字时,程序应该将正确的索引设置为true。例如,如果我输入5,那么:

numberArray [5] = true;

但是,如果用户第二次输入值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;
    }
}

问题在于,当我运行程序时,无论我输入什么内容,我都会自动收到消息“已经选择了数字”。即使是我第一次输入数字。我不懂。默认情况下,布尔数组中的所有值都不是false吗?

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

5 个答案:

答案 0 :(得分:5)

while (numberArray[enteredNumber] = true) {

制作

while (numberArray[enteredNumber] == true) {

或改为

while (true == numberArray[enteredNumber]) {

或只是删除==true

while (numberArray[enteredNumber]) {

答案 1 :(得分:2)

while (numberArray[enteredNumber] = true) 

是一项作业,使用==运算符或仅while (numberArray[enteredNumber])

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

答案 2 :(得分:1)

将while行更改为:

while (numberArray[enteredNumber]) {

因为错误地输入=而不是==是一个常见错误,有些人总是以下列方式编写此类声明:

while (true == numberArray[enteredNumber]) {

使用此格式,如果您使用=而不是==,则会出现编译错误。

另外,如果你使用一种静态分析工具,比如PMD,我相信你会收到你最初写的声明的警告。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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