iT邦幫忙

0

關於boolean預設值 及 while迴圈問題

關於下面參考書上的檢查輸入資料是否為一整數範例,
想請問一下兩個問題點:

  1. boolean值一開始預設初始值就是false嗎?
  2. 想確認while迴圈中的(!isInteger)的意思

!isInteger是指預設值(true/false)的反向嗎?
從後面回推的話,當發現不是整數時isInteger會被設定成false,
所以while這邊的判斷是當isInteger是反向false的時候又回去做do迴圈,
所以isInteger預設值是true? 比較不了解(!isInteger)的部分。
不好意思再麻煩大神協助解答,謝謝

public class CheckInteger {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String str; //記錄使用者輸入資料
		boolean isInteger; //使用者輸入是否為整數
		
		do {
			isInteger = true;
			System.out.println("請輸入整數:");
			str = br.readLine(); //讀取使用者輸入資料
			
			for(int i=0 ; i<str.length();i++) {
				char ch = str.charAt(i); //取出個別字元
				if(ch<'0' || ch>'9') {   //不是數字
					System.out.println("您輸入的不是整數!");
					isInteger = false;
					break; //以檢查出非數字不需繼續
				}
			}
		}while(!isInteger);
	}
}

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-11-26 17:53:37
最佳解答

boolean值一開始預設初始值就是false嗎?


https://ithelp.ithome.com.tw/upload/images/20211126/20001787P7ReuSh7E8.png

!isInteger是指預設值(true/false)的反向嗎?

精準地說,是 isInteger 當時值的反向
如果你直接唸程式碼!isInteger,就是「不」「是整數」

所以isInteger預設值是true?

不必糾結於預設值
在 do 迴圈一開始
就指定isInteger = true;

2
Luke
iT邦新手 2 級 ‧ 2021-11-26 17:58:43
  1. boolean值一開始預設初始值就是false嗎?
    => 您執行看看就知道了/images/emoticon/emoticon07.gif
  2. 想確認while迴圈中的(!isInteger)的意思
    =>while迴圈中的(true) 條件符合 ,繼續執行do{...}程式邏輯
    =>while迴圈中的(flase)條件不符合離開,不繼續執行do{...}程式邏輯
2

boolean值一開始預設初始值就是false嗎?

我覺得你誤會的地方是這邊

boolean isInteger

這裏只是宣告 isInteger 的變數類型為布林值。
而 isInteger 目前的值就是「沒有值」、「空」、「NULL」、「不存在」、「無」、「沒有」
自已選一個喜歡的詞句。
總之,連你所謂的預設值都沒有。
但我相信你會說直接用會有flash值。
這又得去討論到型態轉型的情況。
就如上面說的「沒有值」、「空」、「NULL」、「不存在」、「無」、「沒有」。
一但轉型為布林值(boolean)。這些型態都會視為 falsh。
但並非是你所謂的「預設值」。這點你要先理解。

想確認while迴圈中的(!isInteger)的意思

!就是「反向」「否則」「不是」「NOT」「NO!!!!」
在許多程式語言中。「!」是視為一種運算符。
!也可以是 <> 、 NOT 、不相等的運算符的簡寫法。

最簡單的解釋

true == true;
false == false;
!true == false;
!false == true;

以上的條件都是成立的

剩下來的程式解說,其它人說的很明白了。我就不在多說了。

1
一級屠豬士
iT邦大師 1 級 ‧ 2021-11-27 11:57:20

do while 不是 while ....

那 while do呢??

我要發表回答

立即登入回答