聲明:此篇簡(jiǎn)書(shū)是參照尚硅谷網(wǎng)站內(nèi)視頻而寫(xiě)甚侣,其內(nèi)的觀點(diǎn)是由尚硅谷視頻內(nèi)講解內(nèi)容以及自己理解所匯集寫(xiě)的藻肄,如有侵犯版權(quán)或不對(duì)的地方蔑舞,請(qǐng)直接在下面留言,我會(huì)及時(shí)作出修改嘹屯,謝謝攻询!
/*
- 編寫(xiě)程序,由鍵盤(pán)輸入三個(gè)整數(shù)分別存入變量num1州弟、num2蜕窿、num3,
- 對(duì)他們進(jìn)行排序呆馁,并且從小到大輸出桐经。
第一步 是先聲明三個(gè)函數(shù)指針
-
第二步 就是要知道這三個(gè)函數(shù)指針的返回值類型,在這里prompt()這函數(shù)的返回值是“String”類型
/
// var num1 = prompt("請(qǐng)輸入第一個(gè)數(shù):");
// var num2 = prompt("請(qǐng)輸入第二個(gè)數(shù):");
// var num3 = prompt("請(qǐng)輸入第三個(gè)數(shù):");
/
* 這時(shí)你心里就有個(gè)疑問(wèn)了浙滤,如何才能知道這三個(gè)函數(shù)指針是什么類型阴挣。雖然上面我已經(jīng)說(shuō)過(guò)prompt()是“String”類型
* 但是如果我沒(méi)有提前說(shuō)的話,你知道怎么才能獲取類型嗎纺腊?畔咧??揖膜?誓沸?
* 想知道函數(shù)指針是什么類型,其實(shí)壹粟,也很簡(jiǎn)單那就是用alert()打印
* 這樣寫(xiě)才能完整的知道 alert(typeof num1);的結(jié)果
* alert():是一個(gè)提示框的小窗口
* 在小括號(hào)中 typeof:是類型的意思
* 在類型后面的 num1:是函數(shù)指針拜隧,也是返回值的載體
/
/
* 現(xiàn)在我們知道了這三個(gè)函數(shù)指針是“string”類型的,但是趁仙,這不是我們需要的類型洪添,我需要的是"Number"類型
* 在這里為什么不能用“strong”類型哪?
* 那是因?yàn)槲覀冃枰猵rompt()返回?cái)?shù)字雀费,而不是字符干奢。在if判斷里“strong”類型的返回值 會(huì)被轉(zhuǎn)換成NaN,如果是NaN的話盏袄,那么我們的if判斷就不會(huì)準(zhǔn)確忿峻,也沒(méi)有必要存在了
* 那么如何才能得到 "Number"類型哪薄啥?
* 其實(shí),很簡(jiǎn)單在prompt()前面加上一個(gè)“+”加號(hào)逛尚,這樣不論prompt()返回什么都會(huì)被轉(zhuǎn)換成"Number"類型的返回值垄惧。就如下面的寫(xiě)法一下
*/var num1 = +prompt("請(qǐng)輸入第一個(gè)數(shù):"); var num2 = +prompt("請(qǐng)輸入第二個(gè)數(shù):"); var num3 = +prompt("請(qǐng)輸入第三個(gè)數(shù):");
// alert("---:"+ num1);//這里已經(jīng)不需要打印了,可以注釋掉了
/*
* 第三步 如果要排序的話黑低,首先是要選擇是從小到大赘艳,還是從大到小來(lái)排序
*
* 在這里我們?cè)谏厦嬉呀?jīng)選擇了從小到大來(lái)排序
* 第四步 首先酌毡,先找到三個(gè)函數(shù)指針中哪個(gè)是最小的數(shù)克握。其次,就是上面三個(gè)函數(shù)指針的返回值是不確定的枷踏,
* 在不確定的前提下要找到最小的數(shù)菩暗,那么就需要 if 判斷,來(lái)處理這種未知的情況旭蠕。
*
*/
// 找到三個(gè)數(shù)中最小的數(shù)
if(num1 < num2 && num1 < num3) {
//如果這個(gè)判斷成立那么 num1 可以確定是最小的數(shù)
//那么接下來(lái)就需要寫(xiě)一個(gè)判斷num2停团、num3,判斷它們誰(shuí)是第二個(gè)最小的數(shù)
if (num2 < num3) {
//這個(gè)判斷是判斷num2是否小于num3掏熬,如果num2 小于num3那么這個(gè)判斷成立
//那么排序的順序(從小到大)是 num1 num2 num3
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num1 +'佑稠;第二個(gè)最小數(shù)是:'+num2+';第三個(gè)最小數(shù)是:'+num3);
} else{
//這個(gè)判斷是判斷num2是否小于num3旗芬,如果num2 不 小于num3那么這個(gè)判斷成立
//那么排序的順序(從小到大)是 num1 num3 num2
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num1 +'舌胶;第二個(gè)最小數(shù)是:'+num3+';第三個(gè)最小數(shù)是:'+num2);
}
} else if(num2 < num1 && num2 < num3){
//如果這個(gè)判斷是成立的那么num2是最小的數(shù)
//然后,在這里還需要寫(xiě)一個(gè)if判斷疮丛,來(lái)比較num1和num3
if (num1 < num3) {
//這里有點(diǎn)繞幔嫂,在這個(gè)判斷外面已經(jīng)確定了num2是最小的數(shù),那么接下來(lái)就是要確定num1誊薄、num3誰(shuí)是第二個(gè)最小的數(shù)
//如果這個(gè)num1小于num3履恩,那么排序的順序(從小到大)是 num2 num1 num3
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num2 +';第二個(gè)最小數(shù)是:'+num1+'呢蔫;第三個(gè)最小數(shù)是:'+num3);
} else{
//這個(gè)判斷是判斷num1是否小于num3切心,如果num1 不 小于num3那么這個(gè)判斷成立
//那么排序的順序(從小到大)是 num2 num3 num1
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num2 +';第二個(gè)最小數(shù)是:'+num3+'片吊;第三個(gè)最小數(shù)是:'+num1);
}
} else{
//如果上面兩個(gè)判斷都不成立昙衅,那num3是最小的數(shù)
//確定num3之后,我們還需要確定num1和num2誰(shuí)是第二個(gè)最小的數(shù)
if (num1 < num2) {
//這里有點(diǎn)繞定鸟,在這個(gè)判斷外面已經(jīng)確定了num3是最小的數(shù)而涉,那么接下來(lái)就是要確定num1、num2誰(shuí)是第二個(gè)最小的數(shù)
//如果這個(gè)num1小于num3联予,那么排序的順序(從小到大)是 num3 num1 num2
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num3 +'啼县;第二個(gè)最小數(shù)是:'+num1+'材原;第三個(gè)最小數(shù)是:'+num2);
} else{
//這個(gè)判斷是判斷num1是否小于num2,如果num1 不 小于num2那么這個(gè)判斷成立
//那么排序的順序(從小到大)是 num3 num2 num1
//打印的話我們還是使用 alert() 來(lái)驗(yàn)證
alert('第一個(gè)最小數(shù)是:'+num3 +'季眷;第二個(gè)最小數(shù)是:'+num2+'余蟹;第三個(gè)最小數(shù)是:'+num1);
}
}
/*
* 雖然這樣寫(xiě)有點(diǎn)笨拙,代碼也有點(diǎn)多子刮,但是威酒,他卻把所有的可能性都寫(xiě)出來(lái)了,當(dāng)然只有三個(gè)比較參數(shù)的話挺峡,
* 只有這六個(gè)判斷葵孤,比較參數(shù)再多一個(gè)的話可能就要再加幾個(gè)判斷了,這些都是廢話
*
* 在以后的項(xiàng)目中 if 判斷是經(jīng)常被用到的橱赠,當(dāng)然如果沒(méi)有必要的話尤仍,可以不用寫(xiě) if 判斷,判斷寫(xiě)多了會(huì)影響程序運(yùn)行速度
* 在項(xiàng)目里第一要有清晰的思路和邏輯狭姨。
* 第二要有明確的目標(biāo)宰啦。
* 第三要有謹(jǐn)慎的態(tài)度
* 這樣才能搞成工作
*/