我班级的循环没有返回预期值。当方法中输入的值等于区域中的某个值时,它应返回true。 当我编译并运行我的main方法时: "请输入要检查的身份证号码" 我输入2 "你为id"输入了一个号码。 " 565" " 456" " 342" " 234" " 237" " 192" " 237" " 109" " 278" " num u输入2 true" "您输入的值为false" "按任意键继续。 。 "
" num u输入2 true" line是没用的,只是用于测试。 由于2不等于数组中相同的任何元素,我不确定为什么会这样 仍然是假的。
这是我的班级。
public class Account
{
int[] aNum = {565, 456, 342, 234, 237, 192, 237, 109, 278};
boolean flag = false;
public boolean aChecker(int num)
{
for(int i = 0; i < aNum.length; i++)
{
if(num == aNum[i]);
{
System.out.println(aNum[i]);
flag = true;
}
}
System.out.println("num u entered " + num + " " + flag);
return flag;
}
}
这是我的主要方法。
import java.math.*;
import java.text.DecimalFormat;
import java.io.*;
import java.util.*;
public class labBookFiftyThree {
public static void main(String[] args) {
Scanner myInput = new Scanner(System.in);
Account myAccounts = new Account();
int id = -1;
while (id < 0) {
System.out.println("Please enter the id number to be checked");
if (myInput.hasNextInt()) {
System.out.println("you entered a number for the id");
id = myInput.nextInt();
} else if (myInput.hasNext()) {
System.out.println("Please enter a proper value");
myInput.next();
} else {
System.err.println("No more input");
System.exit(1);
}
}
System.out.println("The value you entered is " + myAccounts.aChecker(id));
}
}
答案 0 :(得分:1)
if(num == aNum[i]);
{
System.out.println(aNum[i]);
flag = true;
}
相当于
if(num == aNum[i])
/* do nothing at all */;
{
System.out.println(aNum[i]);
flag = true;
}
由于if
后面有额外的分号,System.out.println
和flag = true
不属于if
语句。因此,无论if
条件是否为true
,都会执行它们。
从if
行删除最后一个分号。