如何让我的设置方法public void setYear(String year)
检查输入是否为数字?这是一个课堂练习。我只是想了解为什么/如何做到这一点。我不知道为什么,但是必须是字符串年份,我需要确保只能使用数字。
例如,我有:
public void setColour(String colour) {
colour = colour;
}
答案 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 );