課程
/后端開發(fā)
/Java
/Java入門第一季(IDEA工具)升級(jí)版
eclipse顯示的報(bào)錯(cuò)信息在定義方法的第一行出錯(cuò)了
2016-09-07
源自:Java入門第一季(IDEA工具)升級(jí)版 7-1
正在回答
我先說一下你的意思:“在main中給出一組成績,然后先通過刪選,排除錯(cuò)誤的數(shù)據(jù),也就是119,-23,然后再通過函數(shù)調(diào)用獲得你想要的前三名”對(duì)吧?
接下來,我說一下,里面遇到的小錯(cuò)誤:
這里的num1,你的意思是判斷是不是前三名,然后跳出循環(huán)的意思,但假設(shè)當(dāng)num1=3的時(shí)候,程序跳出循環(huán),return 是在循環(huán)內(nèi)部,所以程序會(huì)執(zhí)行不到,也就是說,你的程序沒有返回值,這就是你問的錯(cuò)誤
上面有人說把,return拿到外面去,也是不對(duì)的,首先i是局部變量,只在循環(huán)中有效,出了循環(huán)就沒有作用,會(huì)出現(xiàn)空指針,這時(shí)候或許可以把i作用域擴(kuò)大成方法內(nèi),也就是這樣然后返回設(shè)置成這樣
程序就沒有問題
但返回回去的num,沒有進(jìn)行輸出,你忘記輸出了,因?yàn)槟惴祷氐闹皇且粋€(gè)int值,所以你輸出的結(jié)果也只是一個(gè)
以上就是你遇到的小錯(cuò)誤了
至于正確的做法有以下幾個(gè)思路:
1.定義一個(gè)方法,這方法的功能就是輸出前三個(gè)的成績,把System.out.println都放在方法里面,提高代碼的簡潔性,main里面放方法就好,輸出什么的都放其他方法里面,然后在循環(huán)里面每找到一個(gè)輸出一個(gè),最簡單的一種方法
2.其次,如果你要獲得前三名成績,并對(duì)成績數(shù)據(jù)進(jìn)行處理,建議用上面的返回類型是int【】數(shù)組,得到后,想打印,想修改,都沒問題
3.第三種,如果你非要把方法定義成int值,那你可以在main函數(shù)里面定一個(gè)循環(huán),跟一個(gè)全局變量,這個(gè)變量在main函數(shù)里跟top里面都要用到,找到一個(gè),返回一個(gè)int值。
以上就是所有的錯(cuò)誤跟解決的思路,正確程序相信你可以做出來的!??!望采納~
丘頁 提問者
你仔細(xì)看一下,你這樣91,89,73都可以被返回。
最大的119被continue掉,循環(huán)到第二大的91時(shí),由于這是num1是1,return語句會(huì)被執(zhí)行。但num1還沒大于3,for循環(huán)還再繼續(xù)。
哥們,按照你的思路,這個(gè)方法必須返回一個(gè)數(shù)組,返回值寫成int當(dāng)然是不行的!
public?int[]??top3(int[]scores){ ????int?num?=0; ????int[]t=new?int[3]; ????scores.sort(); ????for(int?i?=scores.length();i>0;i--){ ????????if(scores[i]>100||scores[i]<0)continue; ????????else{ ????????t[num++]=scores[i]; ????????if(num==3)break; ????????} ????} ????return?int[]t; }
return不能寫在循環(huán)里面 ?
但是每個(gè)方法只能return一個(gè)值
所以按理說這個(gè)程序不能有返回值 ?而是在方法里面就把成績給輸出來(可能有但是我沒有想到)
剛前面說的大括號(hào)其實(shí)沒多 ?是我看錯(cuò)了。
所以這個(gè)可以改成這個(gè):
然后main函數(shù)里直接調(diào)用就可以。
估計(jì)你那個(gè)return語句放錯(cuò)位置了把
public void top(int [] scores){ ? 改為 ? ? public void top3(int [] scores){
你最下面多了一個(gè)大括號(hào)吧
宇哥sss丶
舉報(bào)
0基礎(chǔ)萌新入門第一課,從Java環(huán)境搭建、工具使用、基礎(chǔ)語法開始
2 回答求大神指教哪里出錯(cuò)了
3 回答求大神指教錯(cuò)哪兒了。。。
2 回答求大神指點(diǎn)下哪里錯(cuò)了
2 回答請(qǐng)大神指教,哪里錯(cuò)了?
4 回答為什么用帶參帶返回值的方法不行?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-09-08
我先說一下你的意思:“在main中給出一組成績,然后先通過刪選,排除錯(cuò)誤的數(shù)據(jù),也就是119,-23,然后再通過函數(shù)調(diào)用獲得你想要的前三名”對(duì)吧?
接下來,我說一下,里面遇到的小錯(cuò)誤:
上面有人說把,return拿到外面去,也是不對(duì)的,首先i是局部變量,只在循環(huán)中有效,出了循環(huán)就沒有作用,會(huì)出現(xiàn)空指針,這時(shí)候或許可以把i作用域擴(kuò)大成方法內(nèi),也就是這樣
然后返回設(shè)置成這樣
程序就沒有問題
但返回回去的num,沒有進(jìn)行輸出,你忘記輸出了,因?yàn)槟惴祷氐闹皇且粋€(gè)int值,所以你輸出的結(jié)果也只是一個(gè)
以上就是你遇到的小錯(cuò)誤了
至于正確的做法有以下幾個(gè)思路:
1.定義一個(gè)方法,這方法的功能就是輸出前三個(gè)的成績,把System.out.println都放在方法里面,提高代碼的簡潔性,main里面放方法就好,輸出什么的都放其他方法里面,然后在循環(huán)里面每找到一個(gè)輸出一個(gè),最簡單的一種方法
2.其次,如果你要獲得前三名成績,并對(duì)成績數(shù)據(jù)進(jìn)行處理,建議用上面的返回類型是int【】數(shù)組,得到后,想打印,想修改,都沒問題
3.第三種,如果你非要把方法定義成int值,那你可以在main函數(shù)里面定一個(gè)循環(huán),跟一個(gè)全局變量,這個(gè)變量在main函數(shù)里跟top里面都要用到,找到一個(gè),返回一個(gè)int值。
以上就是所有的錯(cuò)誤跟解決的思路,正確程序相信你可以做出來的!??!望采納~
2016-09-09
你仔細(xì)看一下,你這樣91,89,73都可以被返回。
最大的119被continue掉,循環(huán)到第二大的91時(shí),由于這是num1是1,return語句會(huì)被執(zhí)行。但num1還沒大于3,for循環(huán)還再繼續(xù)。
2016-09-07
哥們,按照你的思路,這個(gè)方法必須返回一個(gè)數(shù)組,返回值寫成int當(dāng)然是不行的!
2016-09-07
return不能寫在循環(huán)里面 ?
但是每個(gè)方法只能return一個(gè)值
所以按理說這個(gè)程序不能有返回值 ?而是在方法里面就把成績給輸出來(可能有但是我沒有想到)
剛前面說的大括號(hào)其實(shí)沒多 ?是我看錯(cuò)了。
所以這個(gè)可以改成
這個(gè):
然后main函數(shù)里直接調(diào)用就可以。
2016-09-07
估計(jì)你那個(gè)return語句放錯(cuò)位置了把
2016-09-07
public void top(int [] scores){ ? 改為 ? ? public void top3(int [] scores){
2016-09-07
public void top(int [] scores){ ? 改為 ? ? public void top3(int [] scores){
2016-09-07
你最下面多了一個(gè)大括號(hào)吧