我需要帮助在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); 如果(新编号
所以这个程序应该将电话号码从1112223333格式化为(111)222-3333。作业中说,我们可以假设用户将输入一个未格式化的电话号码,但是我想说一点安全性,这样,如果用户通过更改输入的号码不是10位数长,而是错误,则会提示他们重新输入号码。 谢谢 使用正则表达式:我需要帮助在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) {
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;
}
}
}
}