第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

java小白,為什么這里會(huì)陷入死循環(huán)?!

java小白,為什么這里會(huì)陷入死循環(huán)?!

blackbamboo 2016-06-01 22:16:05
public?class?ExceptionDemo{ ????public?static?void?main(String[]?args){ ????????Scanner?input=new?Scanner(System.in); ????????int?temp=0; ????????int?i=0; ????????//輸入一個(gè)數(shù),大于零時(shí)重新輸入,小于零跳出,輸入出現(xiàn)異常時(shí), ????????//重新輸入,并打印警告,但是出現(xiàn)異常時(shí)卻一直陷入死循環(huán)。 ????????while(true){ ????????????System.out.println(i++); ????????????System.out.print("請(qǐng)輸入一個(gè)不大于10的數(shù)字:"); ????????????try?{ ????????????????temp=input.nextInt(); ????????????}?catch?(Exception?e)?{ ????????????????System.err.println("請(qǐng)按要求輸入!"); ????????????????continue; ????????????} ????????????if(temp>9){ ????????????????System.err.println("請(qǐng)按要求輸入!"); ????????????????continue; ????????????}else{ ????????????????break; ????????????} ????????} ????} }
查看完整描述

11 回答

已采納
?
為誰風(fēng)露_立中宵

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超2個(gè)贊

scanner在要求用戶輸入的時(shí)候,其實(shí)是在內(nèi)存中保存了用戶輸入,輸入字母等就會(huì)存入該段內(nèi)存。當(dāng)我們用input.nextInt()調(diào)用時(shí),就不能調(diào)用出來,因?yàn)樗皇俏覀円{(diào)用的int類型,這時(shí)就會(huì)報(bào)輸入不匹配錯(cuò)誤??墒菃栴}就在這兒,我們用input.nextInt()調(diào)用沒把該段內(nèi)存中的東西提出來,他就會(huì)一直占用這段內(nèi)存,導(dǎo)致我們二次輸入時(shí),就不會(huì)再要求用戶輸入了,他會(huì)繼續(xù)試圖調(diào)用該段內(nèi)存數(shù)值。

???所以解決辦法就是我們清空該段內(nèi)存,或者把該段內(nèi)存中的數(shù)值取出。所以我們?cè)赾atch塊中使用 input.next(); 就可以解決。因?yàn)閕nput.next()是得到字符串所以可以把該段內(nèi)存中的值取出。因此最終可通過如下方式解決

????try?{
	????????????????temp=input.nextInt();
	????????????}?catch?(Exception?e)?{
	????????????	input.next();
	????????????????System.err.println("請(qǐng)按要求輸入!");
	????????????????continue;
	????????????}

其余的不變!

查看完整回答
2 反對(duì) 回復(fù) 2016-06-02
?
kstg5944571

TA貢獻(xiàn)18條經(jīng)驗(yàn) 獲得超16個(gè)贊

while(true)···這是恒成立的,當(dāng)然一直死循環(huán)啦,改成temp>=0試試

查看完整回答
1 反對(duì) 回復(fù) 2016-06-01
?
不偏不易

TA貢獻(xiàn)96條經(jīng)驗(yàn) 獲得超118個(gè)贊

要學(xué)會(huì)Debug

設(shè)置斷點(diǎn),并Debug.

一步一步走下去,觀察變量。然后就能發(fā)現(xiàn)錯(cuò)誤。

查看完整回答
2 反對(duì) 回復(fù) 2016-06-01
  • 252545109
    252545109
    是的,java開發(fā)必須要會(huì)用debug這是一個(gè)專業(yè)java程序員必須要有的素質(zhì)!
  • blackbamboo
    blackbamboo
    就是不會(huì)啊,剛學(xué)java。
  • 晉強(qiáng)
    晉強(qiáng)
    都死循環(huán)了 在設(shè)置斷點(diǎn) 死完了。。哈哈
?
晉強(qiáng)

TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超1個(gè)贊

在捕獲異常中 把continue改為break

查看完整回答
反對(duì) 回復(fù) 2016-06-02
?
blackbamboo

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

我是想在里面的代碼中跳出,現(xiàn)在的情況是,一但有異常,就一直循環(huán),不會(huì)給我輸入的機(jī)會(huì)。

查看完整回答
反對(duì) 回復(fù) 2016-06-02
  • blackbamboo
    blackbamboo
    用try...catch是想如果輸入數(shù)字以外的字符的話程序會(huì)終會(huì),如果出現(xiàn)異常就提示一下,然后再從新輸入。
?
慕粉3248975

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超8個(gè)贊

出現(xiàn)異常時(shí),不應(yīng)該用continue,用break就可以跳出循環(huán)了,continue是進(jìn)入下一次循環(huán)

同時(shí)你這段程序的代碼邏輯有問題

查看完整回答
反對(duì) 回復(fù) 2016-06-02
?
1255321142

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊

你的代碼編譯都不通過吧!return后面還有代碼?

http://img1.sycdn.imooc.com//574f91f900019cf703170105.jpg


查看完整回答
反對(duì) 回復(fù) 2016-06-02
?
慕用9836023

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

while (true){}注定是一個(gè)死循環(huán)


查看完整回答
反對(duì) 回復(fù) 2016-06-02
  • 11 回答
  • 1 關(guān)注
  • 2844 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)