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