簡體   English   中英

帶有“do-while 循環”的“If”條件?

[英]An “If” condition with a “do-while loop”?

我有這種方法,它要求用戶提供多個輸入,並根據這 4 個值在最后創建 object。 不應允許輸入空格或僅按回車鍵,並且問題應循環直到滿足條件。

此外,每次不接受輸入時,應打印出消息“錯誤:字段不能為空”。 我的 do-while 循環似乎工作正常,只是我不知道在哪里實現我的錯誤消息以使其在正確的條件下出現?

提前致謝。

public void registerDog() {
    String name = null;
    do {
        System.out.print("Name?> ");
        name = input.nextLine();
    } while (name.trim().isEmpty());
    name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
    
    System.out.print("Breed?> ");
    String breed = input.nextLine();
    breed = breed.substring(0,1).toUpperCase() + breed.substring(1).toLowerCase();

    System.out.print("Weight?> ");
    int weight = input.nextInt();

    System.out.print("Age?> ");
    int age = input.nextInt();

    Dog dog = new Dog(name, breed, age, weight);
    doggoList.add(dog);
    System.out.println("\n" + dog.getName() + " has been added to the register.\n" + dog.toString());
}

您是否有任何理由堅持使用 do-while 循環? 我會放棄 do-while,而使用 if 語句。 像這樣的東西:

String name;

while (true) {
    System.out.print("Name?> ");
    name = input.nextLine();

    if (!name.trim().isEmpty()) {
        break;
    }

    System.out.println("%nError: field cannot be empty");
}

您還可以通過將其制成方法來簡化代碼,並在每次需要用戶提供值時調用它,而不是為每個值重寫相同的代碼。 該方法可能如下所示:

public static String getValueFromUser(String prompt) {
    String value;

    while (true) {
        System.out.print(prompt);
        value = input.nextLine();

        if (!value.trim().isEmpty()) {
            return value;
        }

        System.out.println("%nError: field cannot be empty");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM