我似乎搞不清楚這個問題。
我想讓它這樣做,如果用戶輸入的東西不等于12個字符,否則,它就會回圈,直到用戶輸入的東西符合if陳述句的要求,回傳真。
setter:
//boolean return method for validation。
public boolean setSSN(String ssN) {
if (ssN.length() != 12) {
return false;
}
if(Character.isDigit(ssN.charAt(0)) && Character.isDigit(ssN.charAt(1)) &&
Character.isDigit(ssN.charAt(2)) && ssN.charAt(3) == '-' & &
Character.isDigit(ssN.charAt(4)) && Character.isDigit(ssN.charAt(5) &&
Character.isDigit(ssN.charAt(6)) && ssN.charAt(7) == '-' & &
Character.isDigit(ssN.charAt(8)) && Character.isDigit(ssN.charAt(9) &&
Character.isDigit(ssN.charAt(10)) && Character.isDigit(ssN.charAt(11) )) {
ssNumber = ssN;
return true;
}
else {
System.out.println("錯誤資訊") 。
return false。
}
main:
System.out.println("What is your social security number using this format XXX-XXX-XXXX: ") 。
do {
System.out.print("SSN: ")。
String input1 = in.nextLine()。
employee1.setSSN(input1)。
System.out.println()。
System.out.println(employee1.toString())。
System.out.println()。
} while(!employee1.setSSN(true))。
如果有遺漏的地方,請告訴我。我在編程1之后的兩個學期才開始編程2,我對一切都有點生疏了。
uj5u.com熱心網友回復:
<醇>setSSN設定器中移出,因為驗證一個值和將這個值設定到一個實體欄位是兩個責任。
因此,setter應該看起來像這樣簡單:
// Employees class
public void setSSN(String ssn) {
this.ssNumber = ssn。
- 常規運算式應被用來驗證字串模式,在這種情況下,方法
String::matches可以被應用而不是多次檢查Character.isDigit
驗證格式為###-###-####的SSN的方法,其中#表示一個數字,可以看做:
public static boolean isSSNValid(String ssn) {
return ssn.matches("d{3}-d{3}-d{4}") 。
這個single方法可以被修改,如果需要額外的驗證(例如檢查SSN控制和)或者SSN格式改變的話。
- 對有效值的讀取可以封裝在另一個接受掃描器/讀取器并回傳有效字串的函式中: 。
public static String readValidSSN(Scanner in){
System.out.println("你的社會安全號碼是什么,用這個格式XXX-XXX-XXXX?")。
字串 inputSSN;
System.out.print("SSN: "/span>)。
while (!isSSNValid(inputSSN = in.nextLine())) {
System.out.println("Input SSN has invalid format, please try again") 。
System.out.print("SSN: "/span>)。
}
return inputSSN。
}
那么主方法將被簡化成這樣:
/ ...
employee.setSSN(readValidSSN(in))。
System.out.println()。
System.out.println(employee); //方法toString被自動呼叫。
System.out.println()。
uj5u.com熱心網友回復:
你不應該兩次呼叫你的方法。 使用一個無休止的回圈,當你成功時,你將會跳出這個回圈。
while(true) {
System.out.println("你的社會安全號碼是多少,用這個格式XXX-XXX-XXXX:")。
System.out.print("SSN: ")。
String input1 = in.nextLine()。
if (employee1.setSSN(input1)) ///如果有效則回傳true。
{
System.out.println()。
System.out.println(employee1.toString())。
break。
}
System.out.println()。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/314518.html
標籤:
上一篇:在python中是否有辦法縮短if-elif-else陳述句?
下一篇:插入到選擇和值中
