使用循环输入验证

时间:2014-08-18 19:22:54

标签: java validation loops input

我班级的循环没有返回预期值。当方法中输入的值等于区域中的某个值时,它应返回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));
  }
}

1 个答案:

答案 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.printlnflag = true不属于if语句。因此,无论if条件是否为true,都会执行它们。

if行删除最后一个分号。