【问题标题】:input validation using loop使用循环输入验证
【发布时间】: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


【解决方案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 行中删除最后一个分号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2021-05-13
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多