【发布时间】:2014-10-11 19:05:00
【问题描述】:
我的班级中的一个循环没有返回预期值。当方法中输入的值等于区域中的值之一时,它应该返回 true。 当我编译并运行我的主要方法时: “请输入要检查的身份证号” 我输入2 “您输入了 id 的数字” “565” “456” “342” “234” “237” “192” “237” “109” “278” “你输入了 2 个真” “您输入的值是假的” “按任意键继续……”
“num u enter 2 true”这一行是没有用的,只是用来测试的。 由于 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));
}
}
【问题讨论】:
-
您的
System.out.println("The value you entered is "+myAccounts.aChecker(id));呼叫似乎在循环之外。 -
我认为
boolean flag = false;的作用域有误,它可能应该在aChecker函数内,因此可以在每次调用时将其重置为false。 -
我刚刚提出了格式编辑。你会清楚地看到不正确的
if声明;) -
出于好奇,您为什么将
;放在if行的末尾?这只是一个错字(你的手指滑落了),还是有人教你所有语句都必须以;结尾,这让你感到困惑?我真的很想知道,因为我已经看到这个错误发生了很多,我想知道这是如何教授的。 -
我傻了,我的手指滑了,我加了一个;,谢谢大家。
标签: java validation loops input