问答详情
源自:7-1 编程练习

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

http://img.mukewang.com/57cffcba000197e608120456.jpgeclipse显示的报错信息在定义方法的第一行出错了

提问者:丘頁 2016-09-07 19:43

个回答

  • 慕粉0366153
    2016-09-08 10:47:39
    已采纳

    我先说一下你的意思:“在main中给出一组成绩,然后先通过删选,排除错误的数据,也就是119,-23,然后再通过函数调用获得你想要的前三名”对吧?

    接下来,我说一下,里面遇到的小错误:

    1. http://img.mukewang.com/57d0cd85000133f902390072.jpg这里的num1,你的意思是判断是不是前三名,然后跳出循环的意思,但假设当num1=3的时候,程序跳出循环,return 是在循环内部,所以程序会执行不到,也就是说,你的程序没有返回值,这就是你问的错误

    2. 上面有人说把,return拿到外面去,也是不对的,首先i是局部变量,只在循环中有效,出了循环就没有作用,会出现空指针,这时候或许可以把i作用域扩大成方法内,也就是这样http://img.mukewang.com/57d0cec10001256104190093.jpg然后返回设置成这样http://img.mukewang.com/57d0cee30001c77e02670086.jpg

      程序就没有问题

    3. 但返回回去的num,没有进行输出,你忘记输出了,因为你返回的只是一个int值,所以你输出的结果也只是一个http://img.mukewang.com/57d0cf8d00017c5a03120098.jpg

      以上就是你遇到的小错误了


      至于正确的做法有以下几个思路:

      1.定义一个方法,这方法的功能就是输出前三个的成绩,把System.out.println都放在方法里面,提高代码的简洁性,main里面放方法就好,输出什么的都放其他方法里面,然后在循环里面每找到一个输出一个,最简单的一种方法

      2.其次,如果你要获得前三名成绩,并对成绩数据进行处理,建议用上面的返回类型是int【】数组,得到后,想打印,想修改,都没问题

      3.第三种,如果你非要把方法定义成int值,那你可以在main函数里面定一个循环,跟一个全局变量,这个变量在main函数里跟top里面都要用到,找到一个,返回一个int值。

      以上就是所有的错误跟解决的思路,正确程序相信你可以做出来的!!!望采纳~

  • 喵喵小喵
    2016-09-09 10:22:46

    你仔细看一下,你这样91,89,73都可以被返回。

    最大的119被continue掉,循环到第二大的91时,由于这是num1是1,return语句会被执行。但num1还没大于3,for循环还再继续。

  • 黑山头山大王
    2016-09-07 21:39:17

    哥们,按照你的思路,这个方法必须返回一个数组,返回值写成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;
    }


  • 宇哥sss丶
    2016-09-07 21:23:28

    return不能写在循环里面  

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

    所以按理说这个程序不能有返回值  而是在方法里面就把成绩给输出来(可能有但是我没有想到)

    刚前面说的大括号其实没多  是我看错了。

    所以这个可以改成http://img.mukewang.com/57d01496000186f705500301.jpg这个:



    然后main函数里直接调用就可以。


  • ohmylady
    2016-09-07 21:17:39

    估计你那个return语句放错位置了把

  • 慕欢
    2016-09-07 20:53:33

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

  • 慕欢
    2016-09-07 20:53:21

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

  • 宇哥sss丶
    2016-09-07 20:40:37

    你最下面多了一个大括号吧