我想验证用户输入的电话号码,我需要做的第一件事是检查以确保输入字符串的长度为10,这不是我在代码中看到的问题。< / p>
现在是问题所在的地方,我还需要检查以确保没有输入任何字符,任何有关如何使用数组执行此操作的想法。我想使用Character.isLetter();但无论我如何实现它,它都不会出现。
import java.util.Scanner;
public class Example
{
public static void main(String[] args)
{
boolean isNumber = false;
String phoneNum = "";
Scanner input = new Scanner(System.in);
while(!isNumber)
{
System.out.print("\nEnter your 10 digit phone number (ex: 2123345657): ");
phoneNum = input.nextLine();
/* Yes I could use nextInt(); etc.. but that would defeat the
purpose of this exercise */
if(phoneNum.length() != 10)
{
System.out.println("\n\nBad input");
}
else
isNumber = true;
}
System.out.println("\n\nPhone number is: " + phoneNum);
}
}
我正在寻找像这样的东西。
while(!isRight)
{
System.out.print("\n input number: ");
phoneNum = input.nextLine();
while(i < phoneNum.length())
{
if(phoneNum.length() != 10)
{
System.out.println("not enough numbers");
}
else if (Character.isLetter(phoneNum.charAt(i)) == true)
{
System.out.println("Sorry you can't use any thing but numbers");
}
else
isRight = true;
i++;
}
}
答案 0 :(得分:1)
使用
的正则表达式"^[0-9]{10}"
或者必须以非零开始
"^[1-9][0-9]{9}"
if(!phoneNum.matches("^[0-9]{10}")) {
// ok
}
如果您想使用isLetter
然后尝试
boolean allNum = true;
for (char ch : phoneNum.toCharArray ()) {
if (Character.isLetter (ch)) {
allNum = false;
break;
}
}
答案 1 :(得分:1)
你可以在没有正则表达式的情况下完成:
boolean validate(String str) {
if (str.length() != 10) {
return false;
}
for (int i = 0; i < str.length(); ++i) {
if (!Character.isDigit(str.charAt(i)) {
return false;
}
}
return true;
}
答案 2 :(得分:0)
您可以使用字符串正则表达式匹配来检查字符串是否为数字:
boolean numeric = phoneNum.matches("\\d+");
作为替代解决方案,如果您在项目中导入了apache commons库,则可以使用isNumeric
类的StringUtils
方法,例如:
StringUtils.isNumeric(phoneNum);
答案 3 :(得分:0)
你可以用这个: / *检查是数字* /
StringUtils.isNumeric(yourNumber);
或REGEX以避免所有字符数字不同。
`{\\d+}`
答案 4 :(得分:0)
我想发布我提出的解决方案,原因有几个,但主要是因为如果有的话,有些人遇到问题并且他们故意避免使用数组,正则表达式等等......他们可以有一个很好的例子!
import java.util.Scanner;
public class Example
{
public static void main(String[] args)
{
boolean isNumber = false;
String phoneNum = "";
Scanner input = new Scanner(System.in);
while(!isNumber)
{
isNumber = true;
System.out.print("\nEnter your 10 digit phone number (ex: 4142317534): ");
phoneNum = input.nextLine();
for(int i = 0; i < phoneNum.length(); i++)
{
if(!Character.isDigit(phoneNum.charAt(i)))
{
isNumber = false;
}
}
if(phoneNum.length() != 10)
{
isNumber = false;
}
if(isNumber == false)
{
System.out.println("\n\nInvalid format - please reenter");
}
}
System.out.println("\n\nPhone Number: " + phoneNum);
}
}
是的,它是很多代码,是的,它可以被浓缩,但更重要的是学习和理解事物是如何工作的,以及为什么它们在你努力提高效率之前按照他们的方式工作,效率来自学习和工作你越多你做的越多越好,你减少的浪费就越多!