我所拥有的是一个程序,它读入用户输入的电话号码并返回国家代码(如果存在),区号(如果存在)和本地7位电话号码。 该号码必须作为countrycode-area-local输入。因此,电话号码中可以包含的最大虚线数为2。
例如: 1-800-5555678有两个破折号(它有国家代码和区号) 800-5555678有一个破折号(它只有一个区号) 5555678没有短划线(仅限本地号码)
因此,可以使用短划线,短划线或两个划线,但不超过两个。
我想弄清楚的是你如何计算字符串中的短划线数量(" - ")以确保它们不超过两个实例。如果有,则会打印错误。
到目前为止,我有:
if(phoneNumber ///contains more more than two dashed
{
System.out.println("Error, your input has more than two dashes. Please input using the specified format.");
{
else
{
//normal operations
}
除了这一部分之外,一切都有效。我不知道用什么方法来做这件事。我试着看看indexOf,但我很难过。
答案 0 :(得分:3)
一种方法是将数字解析为字符串然后在破折号上拆分。如果你得到的新数组长度大于3,那么就给出错误。
String s = "1-800-5555678";
String parts[] = s.split("-");
if (parts.length > 3) {
System.out.println("error");
} else {
// do something
}
samrap建议的更节省内存的解决方案是:
String s = "1-800-555-5678";
int dashes = s.split("-").length - 1;
if (dashes > 2) {
System.out.print("error");
} else {
// do something
}
答案 1 :(得分:1)
String phoneNumber = "1-800-5555678";
int counter = 0;
for( int i=0; i< phoneNumber.length(); i++ ) {
if( phoneNumber.charAt(i) == '-' ) {
counter++;
}
}
if(counter > 2) ///contains more more than two dashed
{
System.out.println("Error, your input has more than two dashes. Please input using the specified format.");
{
else
{
//normal operations
}
答案 2 :(得分:0)
像这样的东西。循环遍历字符串中的字符,看看它们是-
int nDashes = 0;
for (int i=0; i<phoneNumber.length(); i++){
if (phoneNumber.charAt(i)=='-')
nDashes++;
}
if (nDashes>2){
//do something
}
答案 3 :(得分:0)
正则表达式和replaceAll()
是你的朋友。使用,
int count=string.replaceAll("\\d","").length();
这将用空字符串替换所有数字,因此您留下的所有数字都是-
s