簡體   English   中英

Java:請告訴我怎么了?

[英]Java: Please tell Me what's wrong?

這是代碼:

System.out.println("Qualifies for instate rate: ");
instate = keyboard.nextLine();
while((instate.equalsIgnoreCase("yes") == false || instate.equalsIgnoreCase("no") == false))
{
    System.out.println("Enter either yes or no:");
    instate = keyboard.nextLine();
}

我的問題是輸出永無止境。 這是輸出

Enter either yes or no:
no
Enter either yes or no:
no
Enter either yes or no:
yes
Enter either yes or no:
yup
Enter either yes or no:

我在鍵盤上輸入的內容都沒有關系。 請告訴我問題和可能的解決方案。

更改:

System.out.println("Qualifies for instate rate: ");
instate = keyboard.nextLine();
while((instate.equalsIgnoreCase("yes") == false || instate.equalsIgnoreCase("no") == false))
{
    System.out.println("Enter either yes or no:");
    instate = keyboard.nextLine();
}

至:

System.out.println("Qualifies for instate rate: ");
instate = keyboard.nextLine();
while((instate.equalsIgnoreCase("yes") == false && instate.equalsIgnoreCase("no") == false))
{
    System.out.println("Enter either yes or no:");
    instate = keyboard.nextLine();
}

將while循環內的條件更改為:

(instate.equalsIgnoreCase("yes") == false && instate.equalsIgnoreCase("no") == false)

這是因為布爾代數中的DeMorgan規則:

!A || !B = !(A && B)
!A && !B = !(A || B)

將您的條件更改為以下內容:

!Arrays.asList(new String[]{"yes", "no"}).contains(instate.toLowerCase())

在您的while循環條件下:

while((instate.equalsIgnoreCase("yes") == false || instate.equalsIgnoreCase("no") == false))
{
    System.out.println("Enter either yes or no:");
    instate = keyboard.nextLine();
}

您要測試是否是“ yes”不是輸入或“ no”不是輸入,因此,如果他們鍵入“ yes”,它將看到他們沒有鍵入“ no”,然后重復循環,如果他們輸入了“否”,就會看到沒有輸入是,然后再次重復。 更改|| 運算符&&運算符,以確保輸入的是“是”或“否”,如果沒有輸入,則將重復執行。

while((instate.equalsIgnoreCase("yes") == false && instate.equalsIgnoreCase("no") == false))
{
    System.out.println("Enter either yes or no:");
    instate = keyboard.nextLine();
}

這行instate.equalsIgnoreCase("yes")已經返回一個boolean因此您無需再次進行比較。

while((!instate.equalsIgnoreCase("yes")) && (!instate.equalsIgnoreCase("no")))

while條件中的布爾表達式之一將始終為true。 “狀態”不能同時為“是”和“否”。 如果您想終止“ no”輸入上的循環,請嘗試

while (!instate.equalsIgnoreCase("no")) {
} 

暫無
暫無

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

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