關於下面參考書上的檢查輸入資料是否為一整數範例,
想請問一下兩個問題點:
!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);
}
}
boolean值一開始預設初始值就是false嗎?
是
!isInteger是指預設值(true/false)的反向嗎?
精準地說,是 isInteger 當時值的反向
如果你直接唸程式碼!isInteger
,就是「不」「是整數」
所以isInteger預設值是true?
不必糾結於預設值
在 do 迴圈一開始
就指定isInteger = true;
了
boolean值一開始預設初始值就是false嗎?
我覺得你誤會的地方是這邊
boolean isInteger
這裏只是宣告 isInteger 的變數類型為布林值。
而 isInteger 目前的值就是「沒有值」、「空」、「NULL」、「不存在」、「無」、「沒有」
自已選一個喜歡的詞句。
總之,連你所謂的預設值都沒有。
但我相信你會說直接用會有flash值。
這又得去討論到型態轉型的情況。
就如上面說的「沒有值」、「空」、「NULL」、「不存在」、「無」、「沒有」。
一但轉型為布林值(boolean)。這些型態都會視為 falsh。
但並非是你所謂的「預設值」。這點你要先理解。
想確認while迴圈中的(!isInteger)的意思
!就是「反向」「否則」「不是」「NOT」「NO!!!!」
在許多程式語言中。「!」是視為一種運算符。
!也可以是 <> 、 NOT 、不相等的運算符的簡寫法。
最簡單的解釋
true == true;
false == false;
!true == false;
!false == true;
以上的條件都是成立的
剩下來的程式解說,其它人說的很明白了。我就不在多說了。