设置方法中的输入验证

时间:2019-03-04 21:50:10

标签: java validation

如何让我的设置方法public void setYear(String year)检查输入是否为数字?这是一个课堂练习。我只是想了解为什么/如何做到这一点。我不知道为什么,但是必须是字符串年份,我需要确保只能使用数字。

例如,我有:

public void setColour(String colour) {
    colour = colour;
}

3 个答案:

答案 0 :(得分:0)

public void setYear(String year) {
       if (Integer.parseInt(year) >= 0) {
           //Do stuff here
       }
}

使用NumberFormatException检查String year是否可以转换为大于或等于零的Integer(从逻辑上讲,年份不能为负)。如果输入不能转换为整数,它将抛出here

答案 1 :(得分:0)

我可以提出两种方法。
假设您需要验证的字符串为strYear,并且您认为所有大于等于0的整数值都有效。
第一种是通过将字符串强制转换为整数并捕获引发的任何错误:

int year = -1;
try {
    year = Integer.parseInt(strYear);
} catch (NumberFormatException e) {
    e.printStackTrace();
}
boolean validYear = (year >= 0);

第二个是消除字符串中的所有非数字字符,并将结果与​​原始字符串进行比较。如果它们相同,则字符串仅由数字组成:

strYear = strYear.trim();
String strOnlyDigits = strYear.replaceAll("\\D", "");
boolean validYear = (!strYear.isEmpty() && strYear.equals(strOnlyDigits));

答案 2 :(得分:0)

public int year;

public void setYear(String year){
   try {
      year = Integer.parseInt(year);
   } catch(Exception e) {
       e.printStackTrace();
   }
}

您可以使用try and catch检查输入是否为数字。在这里,您尝试将String解析为整数。如果仅包含数字,它将能够成功将其转换。另一方面,如果它还有其他一些字符,它将停止并出现异常。尝试捕获可以防止程序崩溃。

同时,您可以尝试使用正则表达式来检查它是否仅包含数字。

String regex = "[0-9]+";
year.matches(regex );