亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何打破 java 中的“if”語句?

如何打破 java 中的“if”語句?

拉風的咖菲貓 2023-01-05 17:21:06
在下面的代碼中。我只想先執行 if 語句。執行時顯示輸出,有效再試一次。我想要它,只打印“有效”而不顯示“再試一次”。在java中怎么做。??我是初學者。public class Test {    public void validate(int age) {        if (age >= 18) {            System.out.println("Valid.");        }        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);    }}
查看完整描述

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由于我理解為“我需要顯示第二條消息但僅在年齡無效的情況下”的第二條評論,我將第二行附加到案例中。


查看完整回答
反對 回復 2023-01-05
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

首先,讓我們整理一些關于整數的事實。

  1. 如果整數 >= 18,則意味著它不 < 18

  2. 如果整數 < 18,則表示它不是 >= 18

  3. 任何數字都是整數,它要么 >= 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.");

           }

       }

   }

但坦率地說,這太可怕了。


查看完整回答
反對 回復 2023-01-05
?
犯罪嫌疑人X

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


編輯我更喜歡丹尼斯的代碼,因為我認為這就是你想要實現的目標。


查看完整回答
反對 回復 2023-01-05
  • 3 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號