所以我无论如何也想不出这一点。我正在尝试编写一个提示用户输入电话号码的程序。这将作为字符串输入,并在稍后的程序中转换为整数数组。然而,我现在遇到的情况是验证用户输入的字符串!包含2-9之间的数字。我已经尝试了.contains方法和.match方法,但是使用这些方法总是会得到错误的结果。如果任何人能就如何解决这个问题提出一些建议,我将不胜感激。在进阶时谢谢。
这是我到目前为止所知道的:
Scanner user_input = new Scanner(System.in);
String number = user_input.nextLine();
if(number.contains("[2-9]+")) {
for(int count = 0; count < number.length(); count++) {
digits[count] = number.charAt(count)-'0';
}
System.out.println(Arrays.toString(digits));
//printWord(digits, out, length, 0);
} else {
System.out.println("Invalid phone number!");
System.exit(0);
}发布于 2014-11-08 13:01:39
您可以创建一个类似onlyDigits(String)的方法,并将Pattern与您提供的regex一起使用,如下所示
private static Pattern pattern = Pattern.compile("[2-9]+");
public static boolean onlyDigits(String in) {
Matcher m = pattern.matcher(in);
return m.matches();
}然后你可以这样叫它
public static void main(String[] args) {
System.out.println(onlyDigits("123"));
System.out.println(onlyDigits("123a"));
System.out.println(onlyDigits("234"));
}发布于 2014-11-08 13:03:44
试试这个:
String regex = "[2-9]+";
number.matches(regex);发布于 2014-11-08 13:07:05
您可以检查以确保给定的输入在字符范围内,例如:
Scanner user_input = new Scanner(System.in);
String number = user_input.nextLine();
for(int i=0; i<number.length;i++){
if(number.charAt(i) >= '2' && number.charAt(i) <= '9') {
digits[i] = number.charAt(i)-'0';
}
} else {
System.out.println("Invalid phone number!");
System.exit(0);
}
}
//printWord(digits, out, length, 0);
System.out.println(Arrays.toString(digits));https://stackoverflow.com/questions/26813935
复制相似问题