【发布时间】:2015-11-18 19:31:09
【问题描述】:
将号码输出为电话号码格式的简单程序 我似乎无法退出循环我不确定我做错了什么我想 !PhoneNumber.equals("999");当用户输入 999 但它不起作用时将退出循环。谁能帮我这是我的代码
import javax.swing.*;
public class PhoneNumberFormat
{
public static void main(String[] args)
{
String PhoneNumber;
int numLength= 10;
do
{
PhoneNumber = JOptionPane.showInputDialog(null,
"Enter your 10 digit phone number or enter 999 to quit");
while(PhoneNumber.length() != numLength)
{
PhoneNumber = JOptionPane.showInputDialog(null,
"Error: You Entered " + PhoneNumber.length() + " digits\nPlease"
+ " Enter a 10 digit Phone number");
}
StringBuilder str = new StringBuilder (PhoneNumber);
str.insert(0, '(');
str.insert(4, ')');
str.insert(5,' ');
str.insert(9, '-');
JOptionPane.showMessageDialog(null, "Your telephone number is " +str.toString());
}while(!PhoneNumber.equals("999"));
}
}
【问题讨论】:
-
你调试过你的代码吗?在我看来,输入 999 将意味着代码永远不会退出 while 循环。
-
如果您只是将对话框留空,则可能存在 NPE。
-
我的理解是,在第一个声明中,您要求 999 退出。然后在下一个代码中,如果用户没有输入 >10 位数字,则您正在匹配。您还必须检查 if 用户是否输入了 3 位数字并且 3 位数字是 999,然后退出循环。我相信这是行得通的
-
@StackFlowed 同意潜在的 NPE,但只有在您按 Cancel 或 Close 输入对话框时才会抛出 NPE。如果在不提供输入的情况下按 OK,则它不会为 null,而是长度为 0 的字符串(空字符串)。