我需要帮助在Java中的if-else语句中创建循环 import java.util.Scanner; 公共类phonenumberformat{ 公共静态void main(字符串[]args){ //为用户输入创建scanner类 扫描仪键盘=新扫描仪(System.in); System.out.println(“请输入您的电话号码:”); 字符串编号=键盘.next(); /*将数字分为我想要的三类 *旁注:因为我们可以假设电话号码的长度为10位数,所以我不知道 *必须计算出用户将输入的数字的长度 */ 字符串区域_代码=数字。子字符串(0,3); 字符串first_three=数字子字符串(3,6); 字符串rest=数字。子字符串(6,10); int new_number=Integer.parseInt(number); 如果(新编号

我需要帮助在Java中的if-else语句中创建循环 import java.util.Scanner; 公共类phonenumberformat{ 公共静态void main(字符串[]args){ //为用户输入创建scanner类 扫描仪键盘=新扫描仪(System.in); System.out.println(“请输入您的电话号码:”); 字符串编号=键盘.next(); /*将数字分为我想要的三类 *旁注:因为我们可以假设电话号码的长度为10位数,所以我不知道 *必须计算出用户将输入的数字的长度 */ 字符串区域_代码=数字。子字符串(0,3); 字符串first_three=数字子字符串(3,6); 字符串rest=数字。子字符串(6,10); int new_number=Integer.parseInt(number); 如果(新编号,java,Java,所以这个程序应该将电话号码从1112223333格式化为(111)222-3333。作业中说,我们可以假设用户将输入一个未格式化的电话号码,但是我想说一点安全性,这样,如果用户通过更改输入的号码不是10位数长,而是错误,则会提示他们重新输入号码。 谢谢 使用正则表达式: import java.util.Scanner; public class phonenumberformat { public static void main(String [] args) {

所以这个程序应该将电话号码从1112223333格式化为(111)222-3333。作业中说,我们可以假设用户将输入一个未格式化的电话号码,但是我想说一点安全性,这样,如果用户通过更改输入的号码不是10位数长,而是错误,则会提示他们重新输入号码。 谢谢

使用正则表达式:

import java.util.Scanner;
public class phonenumberformat {

    public static void main(String [] args) {

        //Create the scanner class for user input
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Please enter your phone number: ");
        String number = keyboard.next();

        /* Separate the number into the three categories I want
         * Side-Note: Since we can assume that the phone number will be 10 digits long I don't
         *      have to figure out the length of the number that the user will input
         */
        String area_code = number.substring(0,3);
        String first_three = number.substring(3,6);
        String rest = number.substring(6,10);



        int new_number = Integer.parseInt(number);
        if (new_number < 10){
            System.out.println("It seems that you have entered an invalid phone number, please try again!");
            /* I want to make a loop here so that if the user accidentally enters more of less than 
             *      a 10 digit number it will loop the "Please enter your phone number: " part so 
             *      Java won't give an error
             */
        } else {
            //Concatenate the number properly so that it is formatted nicely
            String formatted_number = "(" + area_code + ")" + " " + first_three + "-" + rest;
        }

        String final_number = Integer.toString(formatted_number);

        //Print the newly formatted number
        System.out.println(formatted_number);
    }    
}
这不仅是一个单行解决方案,而且不会格式化已格式化的数字(特别是如果输入不是11位数字,则不会发生更改)

如果要强制格式替换已有的任何格式,它仍然只有一行,只需先删除所有非数字:

String formatted = input.replaceAll("^(\\d{3})(\\d{3})(\\d{4})$", "($1) $2-$3");

我已经更正了你的代码,里面有很多错误,比如 您已经应用了Integer.toString(“字符串变量”),您可以直接将字符串分配给字符串变量

//字符串rest=数字。子字符串(6,10);它可以给你StringOutOfBoundException

试试这个

String formatted = input.replaceAll("\\D", "").replaceAll("^(\\d{3})(\\d{3})(\\d{4})$", "($1) $2-$3");
publicstaticvoidmain(字符串[]args){
//为用户输入创建scanner类
扫描仪键盘=新扫描仪(System.in);
System.out.println(“请输入您的电话号码:”);
字符串编号=键盘.next();
/*将数字分为我想要的三类
*旁注:因为我们可以假设电话号码的长度为10位数,所以我不知道
*必须计算出用户将输入的数字的长度
*/
字符串区域_代码=数字。子字符串(0,3);
字符串first_three=数字子字符串(3,6);
字符串rest=数字。子字符串(6,9);
字符串格式的_number=“”;
/*我想在这里做一个循环,这样如果用户不小心输入了超过
*一个10位数的数字,它将循环“请输入您的电话号码:”部分
*Java不会给出错误
*/
int new_number=Integer.parseInt(number);
如果(新编号<10){
System.out.println(“似乎您输入的电话号码无效,请重试!”);
}否则{
//正确连接数字,使其格式正确
格式化的_编号=“(“+区域_代码+”)+“+第一个_三个+”-“+其余;
}
字符串最终\u编号=格式化的\u编号;
//打印新格式化的数字
System.out.println(格式化的\u编号);
}
如果希望用户在出错时重新输入号码,则必须使用Pattern类检查该号码是否有效

public static void main(String[] args) {
                //Create the scanner class for user input
                Scanner keyboard = new Scanner(System.in);

                System.out.println("Please enter your phone number: ");
                String number = keyboard.next();

                /* Separate the number into the three categories I want
                 * Side-Note: Since we can assume that the phone number will be 10 digits long I don't
                 *      have to figure out the length of the number that the user will input
                 */
                String area_code = number.substring(0,3);
                String first_three = number.substring(3,6);
                String rest = number.substring(6,9);
                String formatted_number ="";

                /* I want to make a loop here so that if the user accidentally enters more of less than 
                 *      a 10 digit number it will loop the "Please enter your phone number: " part so 
                 *      Java won't give an error
                 */

                int new_number = Integer.parseInt(number);
                if (new_number < 10){
                    System.out.println("It seems that you have entered an invalid phone number, please try again!");
                } else {
                    //Concatenate the number properly so that it is formatted nicely
                    formatted_number = "(" + area_code + ")" + " " + first_three + "-" + rest;
                }

                String final_number = formatted_number;

                //Print the newly formatted number
                System.out.println(formatted_number);
            }

问题是什么?看起来像古德欣:你应该把你的代码分割成方法。然后一切都会更容易理解(和扩展),请确保描述所需的更改及其背后的合理性。@user2864740我这样做并没有将其标记为否决
import java.util.Scanner;
public class phonenumberformat {

    public static void main(String [] args) {

        //Create the scanner class for user input
        Scanner keyboard = new Scanner(System.in);

        boolean notValid = true;

        System.out.println("Please enter your phone number: ");

        while(notValid)
        {
            String number = keyboard.next();

            if (number.length() !=10){
                System.out.println("It seems that you have entered an invalid phone number, please try again!");

            } else {
                String area_code = number.substring(0,3);
                String first_three = number.substring(3,6);
                String rest = number.substring(6,10);

                //Concatenate the number properly so that it is formatted nicely
                String formatted_number = "(" + area_code + ")" + " " + first_three + "-" + rest;
                //Print the newly formatted number
                System.out.println(formatted_number);

                notValid = false;
            }

        }
    }    
}