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

入门第一季的最后编程练习麻烦看下错在哪儿了

import java.util.*;
public class Test1{
    public static void main(String[] args) {
        int [] scores={89,-23,64,91,119,52,73};
        int [] list;
        Test1 hello=new Test1();
        list=hello.show(scores);
        System.out.println(Arrays.toString(list));
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    public int[] show(int [] scores){
        int sum[]=new int[3];
        int count=0;
        int j=0;
        Arrays.sort(scores);
        for(int i=scores.length-1;i>=0;i--){
            if(scores[i]>=0&&scores[i]<=100){            
                sum[j]=scores[i];
                count++;
                j++;
            }
            if(count>3)
                break;
        }
        return sum;
    }
    
}

语法没问题。就是运行的时候出错了。有谁可以帮忙看看么。谢谢

正在回答

3 回答

我把你的代码稍微做了点修改后,运行过是没问题的。但是输出成绩的要求是一行一行的,所以我觉得输出还是放在循环里面比较好。

import java.util.*;

public class Test1{

    public static void main(String[] args) {

        int [] scores={89,-23,64,91,119,52,73};

        int [] list=new int[3];

        System.out.println("考试成绩前三名为:");

        Test1 hello=new Test1();

        list=hello.show(scores);

        System.out.println(Arrays.toString(list));

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    public int[] show(int [] scores){

        int sum[]=new int[3];

       

        int j=0;

        Arrays.sort(scores);

        for(int i=scores.length-1;i>=0;i--){

            if(scores[i]>=0&&scores[i]<=100){            

                sum[j]=scores[i];

                

                j++;

            }

            if(j>=3)

                break;

        }

        return sum;

    }

    

}


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

柒_夜4080291 提问者

我试了你修改后的代码可以的,主要是我想试试带参有返回值的方法。我大概知道哪里出错了。谢谢了
2016-11-02 回复 有任何疑惑可以回复我~
#2

柒_夜4080291 提问者

问个问题,在main方法里我数组定义直接int [] list;没有分配空间没有报错,为什么在自己定义的show方法里int [] sum=new int[3];不分配空间的时候会出错。
2016-11-02 回复 有任何疑惑可以回复我~
#3

Augus_xu4313989 回复 柒_夜4080291 提问者

这个我也不清楚,我也是刚学的。但我觉得先分配空间应该没有问题。
2016-11-03 回复 有任何疑惑可以回复我~

public class HelloWorld {

    //完成 main 方法

    public static void main(String[] args) {

        int [] numbers = {89, -23,64,91,119,52,73};

        HelloWorld hello = new HelloWorld();

        hello.grade(numbers);

      

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    public void grade(int [] numbers){

        java.util.Arrays.sort(numbers);

        int n = 0;

        for(int i = numbers.length-1;i >= 0 ;i--){

            if(n>=3){

                break;

            }

            else{

                if(numbers[i] > 100||numbers[i]<0){

                continue;

                }

                else{

                System.out.println(numbers[i]);

                }

                n++;

            }

        }

    } 

}


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

柒_夜4080291 提问者

谢谢了。楼上解决了问题,主要是想试试带返回值的方法。
2016-11-02 回复 有任何疑惑可以回复我~

导入的包没有导入正确。少了Array

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

柒_夜4080291 提问者

包问题。java.util.*;就包括了Array了。
2016-11-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

入门第一季的最后编程练习麻烦看下错在哪儿了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信