gpt4 book ai didi

java - 美国电话号码验证问题

转载 作者:行者123 更新时间:2023-12-02 08:15:53 26 4
gpt4 key购买 nike

我在使用我的类(class)的这段代码时遇到了问题:问题如下

1.)成功后不循环

(代码编译,但是当它询问“你的电话号码是什么?”并且我输入 909-8930 时,输出只是回答:正确,直到退出(使用电话号码)。我假设它应该循环?)

2.) 由于括号中的括号而给出错误:

phone = Phone.replaceAll("(","");

phone = Phone.replaceAll(")","");

但是当我注释掉它们并离开时效果很好:phone = Phone.replaceAll("-","");

3.) 没有使用 boolean 命令的最大字符验证。 (我们必须使用我们在类里面学到的代码)

我正在使用 Vista(我知道,很糟糕)cmd 来编译 Java 代码。

/* 


*/
import java.util.Scanner; //
public class PhoneNumber

{

//********number()******
public static boolean Number(String str)

{
int n=0;
while(n<str.length()) //while condition for the loop
{
char c=str.charAt(n);

if(!(c>='0'&&c<='9'))return(false);//0 to 9
n++; // counter and checked loop?

}
return (true);
}
// Phone Number

public static void main(String[] args)

{


// Create a Scanner object to read input.
String phone;
Scanner sc = new Scanner(System.in);


// Get the favorite city
System.out.print("What is your phone number?"); // no ln
phone=sc.nextLine( );


//replace all perenthesis and dashes

phone = phone.replaceAll("-","");
phone = phone.replaceAll("(","");
phone = phone.replaceAll(")","");


// validation of number
if(Number(phone))
{

// sub stuff to add back the dash and whateves
String first,middle,last;
first = phone.substring (0,3);
middle = phone.substring (3,6);
last = phone.substring (6);
String phonea = "("+ first + ")" +"-"+middle+ "-"+last;


// print stuff back
System.out.println ("correct until exit"+ phonea);

// condition to exit
if (phone.equalsIgnoreCase("quit")); //not working?
if (phone.equalsIgnoreCase("end"));
if (phone.equalsIgnoreCase("stop"))System.exit(0);
}
else
{
System.err.println("error-incorrect format: "+ phone); //error

}
}
}

最佳答案

应用程序终止的原因与您如何确定应用程序的下一个状态有关。查看正确电话号码大小写末尾的代码:

        // print stuff back 
System.out.println ("correct until exit"+ phonea);

// condition to exit
if (phone.equalsIgnoreCase("quit")); //not working?
if (phone.equalsIgnoreCase("end"));
if (phone.equalsIgnoreCase("stop"))
System.exit(0);

本质上,您的目的是查看String变量phone是否包含用户请求的状态更改(因此,“继续”或“退出”将是我的猜测)。由于 phone 只是号码的数字(或某种错误的输入),因此不会为您提供状态信息。反过来,这些案例也很少是真实的。

验证后您需要做的是请求用户提供正确的输入,以便应用程序可以确定下一个状态应该是什么。由于我们(SO 用户)不确切知道该程序的规范是什么,因此我们无法确定您到底需要做什么。但是,它可能看起来像这样:

System.out.println("What would you like to do?");
String nextState = sc.nextLine();

while (!nextState.equals("quit") && !nextState.equals("exit")) {
//Do what you need to do (read the phone number, validate it, etc)

System.out.println("What would you like to do?");
String nextState = sc.nextLine();
}

System.out.println("End of application");

这本质上为应用程序提供了确定应用程序何时启动和停止的控制权。虽然用户不希望应用程序停止,但您不断要求用户提供电话号码以进行验证。

虽然这并不是您遇到的问题的完整答案,但它应该可以为您提供一些有关解决某些应用程序问题的不错的指导。

关于java - 美国电话号码验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com