[英]How to exit from a do while loop in Java?
一個簡單的程序,將號碼輸出為電話號碼格式,我似乎無法退出循環我不確定自己在做什么錯,我認為!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時存在,則需要添加一個if條件來對其進行監視。
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");
// add this condition to exit the loop, as well protect against NPE
if (PhoneNumber == null || PhoneNumber.equals("999")) {
break;
}
while (PhoneNumber.length() != numLength) {
PhoneNumber = JOptionPane.showInputDialog(null,
"Error: You Entered " + PhoneNumber.length()
+ " digits\nPlease"
+ " Enter a 10 digit Phone number");
//protect against NPE
if(PhoneNumber == null)
PhoneNumber = "";
}
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"));
}
您將數字強制為10位,那么您期望什么? 它永遠不會等於三位數的“ 999”。
也許您打算這樣做:
while(!PhoneNumber.startsWith("999"));
如果要使用999作為輸入選項退出,請首先允許用戶輸入999作為有效輸入。
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");
}
在這里,如果輸入的長度不是10,則拒絕考慮輸入。
具有修復潛在NPE並解決問題的代碼應如下所示:
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!=null && 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.substring(0,3).equals("999"));
}
}
修復程序已上線
while(PhoneNumber!=null && PhoneNumber.length() != numLength)
和
while(!PhoneNumber.substring(0,3).equals("999"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.