为了账号安全,请及时绑定邮箱和手机立即绑定

下面的带参并且有返回值的方法哪里出错了,求大神指教。

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下载
官方微信