簡體   English   中英

Java-具有int值的While循環條件語句失敗

[英]Java - While Loop Conditional Statement Failure With int Values

在Java編程中,我試圖將一個int通過while循環,並且我希望int小於9且大於零。 但是,當程序運行時,它僅注冊第一個條件(在這種情況下為“ num <1”),而忽略第二個條件(“ num> 9”)。

int num = console.nextInt();
while(num<1 && num>9){
    System.out.println("You must type a number less than nine and greater than zero to continue.");
    num = console.nextInt();
}

我已經取消了他們的訂單,並且出現了同樣的問題。 為什么程序在while循環中注冊第一個條件而不在第二個條件中注冊? 我從未遇到過字符串問題,在這種情況下int的格式是否不同?


據我了解,在大多數編程語言中都是相同的。
原因是a && b表示a為true且b為true時,只有在所有條件下都為true,因此如果'a'不為true則沒有必要檢查b是否為true。
這就是為什么大多數編程語言都這樣實現的原因。
無論數據類型如何,所有情況均是如此。

首先, AND表示兩個條件都應為真。 當您將&&條件放入其中while ,編譯器將無法獲得小於1且大於9的num

對於AND它總是檢查第一個條件; 如果不滿意,它將變得懶惰,並且不檢查后續條件。

解:

while(num<1 || num>9)

在您的代碼段中,表達式為:

(num < 1 && num > 9)

始終會得出假值,一個數字不能同時小於1,也不能大於9。

我想你想:

(num > 0 && num < 9)

編輯:而且,Helios是正確的。 表達式從左到右求值,對於布爾AND(&&),如果不滿足第一個條件(在左邊),則第二個條件(在右邊)將永遠不會被求值,因為合並的表達式永遠不能求和為除了虛假之外,什么都沒有。

根據您的條件,給定的數字必須小於1 “且”大於9,這永遠都是不正確的。

對於您的方案,您需要使用“或”條件

while(num<1 || num>9)

當你寫num<1 && num>9這意味着你正試圖評估如果該數字小於1,大於9,但你真能輸入,號碼是多少?

根據您的要求,您應該檢查提供的數字是否小於1 大於9 所以應該像這樣:

while(num<1 || num>9){

邏輯運算符&&|| ,還可以在評估條件時使用快捷方式。 cond1 && con2 ,如果第一個條件cond1false則評估第二個條件(即cond2就沒有意義。 類似地,在cond1 && con2 ,如果cond1truecond2會對cond2進行評估,因為它是多余的。

暫無
暫無

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

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