亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

下面的帶參并且有返回值的方法哪里出錯了,求大神指教。

http://img1.sycdn.imooc.com//57cffcba000197e608120456.jpgeclipse顯示的報錯信息在定義方法的第一行出錯了

正在回答

8 回答

我先說一下你的意思:“在main中給出一組成績,然后先通過刪選,排除錯誤的數據,也就是119,-23,然后再通過函數調用獲得你想要的前三名”對吧?

接下來,我說一下,里面遇到的小錯誤:

  1. http://img1.sycdn.imooc.com//57d0cd85000133f902390072.jpg這里的num1,你的意思是判斷是不是前三名,然后跳出循環的意思,但假設當num1=3的時候,程序跳出循環,return 是在循環內部,所以程序會執行不到,也就是說,你的程序沒有返回值,這就是你問的錯誤

  2. 上面有人說把,return拿到外面去,也是不對的,首先i是局部變量,只在循環中有效,出了循環就沒有作用,會出現空指針,這時候或許可以把i作用域擴大成方法內,也就是這樣http://img1.sycdn.imooc.com//57d0cec10001256104190093.jpg然后返回設置成這樣http://img1.sycdn.imooc.com//57d0cee30001c77e02670086.jpg

    程序就沒有問題

  3. 但返回回去的num,沒有進行輸出,你忘記輸出了,因為你返回的只是一個int值,所以你輸出的結果也只是一個http://img1.sycdn.imooc.com//57d0cf8d00017c5a03120098.jpg

    以上就是你遇到的小錯誤了


    至于正確的做法有以下幾個思路:

    1.定義一個方法,這方法的功能就是輸出前三個的成績,把System.out.println都放在方法里面,提高代碼的簡潔性,main里面放方法就好,輸出什么的都放其他方法里面,然后在循環里面每找到一個輸出一個,最簡單的一種方法

    2.其次,如果你要獲得前三名成績,并對成績數據進行處理,建議用上面的返回類型是int【】數組,得到后,想打印,想修改,都沒問題

    3.第三種,如果你非要把方法定義成int值,那你可以在main函數里面定一個循環,跟一個全局變量,這個變量在main函數里跟top里面都要用到,找到一個,返回一個int值。

    以上就是所有的錯誤跟解決的思路,正確程序相信你可以做出來的!??!望采納~

2 回復 有任何疑惑可以回復我~
#1

丘頁 提問者

非常感謝!
2016-09-15 回復 有任何疑惑可以回復我~

你仔細看一下,你這樣91,89,73都可以被返回。

最大的119被continue掉,循環到第二大的91時,由于這是num1是1,return語句會被執行。但num1還沒大于3,for循環還再繼續。

0 回復 有任何疑惑可以回復我~

哥們,按照你的思路,這個方法必須返回一個數組,返回值寫成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;
}


0 回復 有任何疑惑可以回復我~

return不能寫在循環里面 ?

但是每個方法只能return一個值

所以按理說這個程序不能有返回值 ?而是在方法里面就把成績給輸出來(可能有但是我沒有想到)

剛前面說的大括號其實沒多 ?是我看錯了。

所以這個可以改成http://img1.sycdn.imooc.com//57d01496000186f705500301.jpg這個:



然后main函數里直接調用就可以。


0 回復 有任何疑惑可以回復我~

估計你那個return語句放錯位置了把

0 回復 有任何疑惑可以回復我~

public void top(int [] scores){ ? 改為 ? ? public void top3(int [] scores){

0 回復 有任何疑惑可以回復我~

public void top(int [] scores){ ? 改為 ? ? public void top3(int [] scores){

0 回復 有任何疑惑可以回復我~

你最下面多了一個大括號吧

1 回復 有任何疑惑可以回復我~
#1

宇哥sss丶

你仔細檢查一下那個大括號。return 也不應該在呢個for的大括號里面吧
2016-09-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

下面的帶參并且有返回值的方法哪里出錯了,求大神指教。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號