我对以下问题感到轻微困难。
我初始化了一个名为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吗?
如果有人能帮助我,我将不胜感激!
答案 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
。