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

大手能帮我看下错在哪里啊???

import java.util.Arrays;

public class helloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

    helloWorld hello=new helloWorld();    

    int[]sett= hello.arrayini(scores);    

    Arrays. sort(sett);

    hello.print(sett);

    }

    

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

    public int[] arrayini(int[]org){

        int length=org.length;

        for (int i=0;i<length;i++) {

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

                for(int j=i;j<length;j++){            org[j]=org[j+1];

                    

                };

                length--;

            }

        int[] cuttail;

        for(int p=0;p<length;p++){

            cuttail[p]=org[p] ;       }

        } 

        return cuttail;

    };

    public void print(int[] num){

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

      for(int k=1;k<=3;k++){

          System.out.println(num[num.length-k]);

      }

    }    


}


          我修改后的代码!!!感谢各位大神相助,通过测试了

package myself.me;


import java.util.Arrays;

public class helloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

    helloWorld hello=new helloWorld();    

    int[]sett= hello.arrayini(scores);    

    Arrays. sort(sett);

    hello.print(sett);

    }

    

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

    public int[] arrayini(int[]org){

        int length=org.length;

        for (int i=0;i<length;i++) {

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

                for(int j=i;j<length-1;j++){            org[j]=org[j+1];

                    

                };

                length--;

            }

       } 

        int[] cuttail=new int [length];

        for(int p=0;p<length;p++){

            cuttail[p]=org[p] ;       } 

        return cuttail;

    };

    public void print(int[] num){

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

      for(int k=1;k<=3;k++){

          System.out.println(num[num.length-k]);

      }

    }    


}


正在回答

2 回答

for (int i=0;i<length;i++) {
            if(org[i]<0||org[i]>100){
                for(int j=i;j<length;j++){            org[j]=org[j+1];
                    
                };
                length--;
            }

你这段代码是要重新排序吗?

排序的话,你是写冒泡算法还是什么算法,我没看明白?你可以直接点用Arrays.sort();进行排序。

另外一个是,如果定义一个变量的话,这里不要定义在for循环里面,因为你在for循环外面还要使用这个变量,所以要放在外面定义,也就是在方法中定义

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

Aertermis 提问者

我这里是想把不符合的要求的数据剔除,并且让后面的数据都往前一个位置,最后把处理好的数据以处理好的长度放到一个新的数组中,完成对数组的初始化处理。
2014-12-07 回复 有任何疑惑可以回复我~
#2

Aertermis 提问者

我已经重写了 把那个放到循环外面了,还发现了一个靠前站位的边界错误
2014-12-07 回复 有任何疑惑可以回复我~
排序直接用arrays的sort就好了啊,你自定义的arrayini方法没什么作用啊
还有,
arrayini方法中,把int[] cuttail定义到for循环外面去,数组在定义时需要指定长度,或者直接等于null


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

Aertermis 提问者

对!火眼晶晶。。。我修改了,我还发现了 自己位置向前靠一个的边界错误,已经把我的修改好的代码放到问题中了
2014-12-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大手能帮我看下错在哪里啊???

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