eclipse显示的报错信息在定义方法的第一行出错了
我先说一下你的意思:“在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){
public void top(int [] scores){ 改为 public void top3(int [] scores){
你最下面多了一个大括号吧