3 回答

TA貢獻1895條經驗 獲得超3個贊
簡而言之:
public void validate(int age) {
if (age >= 18) {
System.out.println("Valid.");
} else {
System.out.println("Not valid.");
System.out.println("Try again.");
}
}
解釋:if如果年齡至少為 18 歲,第一個僅打印文本,但這與以下幾行無關。那些自行行動并有兩種情況:用戶未滿 18 歲或顯示“重試”文本。
你想要做的是檢查“年齡是否至少為 18 歲?” (就像你已經做的那樣)然后顯示“有效”或“無效”。通過將else案例添加到此檢查來執行此操作,您就可以了。
編輯:else由于我理解為“我需要顯示第二條消息但僅在年齡無效的情況下”的第二條評論,我將第二行附加到案例中。

TA貢獻1784條經驗 獲得超8個贊
首先,讓我們整理一些關于整數的事實。
如果整數 >= 18,則意味著它不 < 18
如果整數 < 18,則表示它不是 >= 18
任何數字都是整數,它要么 >= 18 要么 < 18。不能兩者都是。兩者都不是。
現在到你的代碼。我可以這樣寫你的方法:
public void validate(int age) {
if (age >= 18) {
System.out.println("Valid.");
}
if (age < 18) {
System.out.println("Not valid.");
}
}
或更簡單(基于上述事實)
public void validate(int age) {
if (age >= 18) {
System.out.println("Valid.");
} else {
System.out.println("Not valid.");
}
}
那將寫Validor Not Valid。
我也可以這樣寫代碼:
public void validate(int age) {
if (age >= 18) {
System.out.println("Valid.");
return;
}
if (age < 18) {
System.out.println("Not valid.");
} else {
System.out.println("try again.");
}
}
但else由于上述有關數字的事實,該部分是多余的。請注意我是如何使用 areturn來“中斷”控制流的。
您不能break在此上下文中使用語句。JLS 14.15中的 Java 語言規范聲明
對于未標記的break語句:
“如果直接封閉的方法、構造函數或初始化程序中沒有 switch、while、do 或 for 語句包含 break 語句,則會發生編譯時錯誤?!?/p>
我們這里沒有switch, while,do或for聲明。
JLS 說,對于有標簽的休息時間。
" break 語句必須引用直接封閉的方法、構造函數、初始化程序或 lambda 主體中的標簽。沒有非局部跳轉。如果在立即封閉的方法、構造函數、初始化程序中沒有以標識符作為其標簽的標記語句,或 lambda 主體包含 break 語句,發生編譯時錯誤。 ”
...所以我想可以這樣寫:
public void validate(int age) {
label: {
if (age >= 18) {
System.out.println("Valid.");
break label;
}
if (age < 18) {
System.out.println("Not valid.");
} else {
System.out.println("try again.");
}
}
}
但坦率地說,這太可怕了。

TA貢獻2080條經驗 獲得超4個贊
public void validate(int age) {
if (age >= 18) {
System.out.println("Valid.");
} else if (age < 18) {
System.out.println("Not valid.");
} else {
System.out.println("try again.");
}
}
public static void main(String[] args) {
Test t = new Test();
t.validate(18);
}
你的代碼的問題是即使age>=18它仍然會檢查它是否也<18,所以它總是會說什么try again時候age>=18。另外,請檢查它永遠不會try again用這個更正的代碼說的評論,因為在任何情況下都age不會同時 <18 和 >=18
編輯我更喜歡丹尼斯的代碼,因為我認為這就是你想要實現的目標。
添加回答
舉報