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

哪位大神帮我看看为什么我这个程序运行无结果,谢谢?

package com.imooc;

import java.util.Arrays;

public class HelloWorld {

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

Arrays.sort(scores);

int j = 0;

int[] newScores = new int[j];

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

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

continue;

}

else{

newScores[j] = scores[i];

j++;

}

}

return newScores;

}

public static void main(String[] args){

HelloWorld hello = new HelloWorld();

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

int[] newScores = hello.getScores(scores);

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

}

}


正在回答

3 回答

    

不客气。你可以试一试这样。

 //新成绩的数组长度不会超过原数组长度,所以可以将两个数组长度定为一样。
int[] newScores = new int[scores.length]; 
       for(int i = 0 ; i <= scores.length - 1; i++)
       {
           if(scores[i] >= 0 && scores[i] <= 100){
               //新数组长度只记住有效成绩。无效成绩的位置为0
               //循环结束之后,  newScores 数组为:89 0 64 91 0 52 79
               newScores [i] = scores[i];  
           }
       }
               Arrays.sort(realScores); //排序,然后取最后三个成绩,就是成绩为前三的。


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

Yesman012 提问者

非常感谢,在您的引导下我得到了想要的结果!
2016-01-04 回复 有任何疑惑可以回复我~
#2

Its_forever 回复 Yesman012 提问者

不用客气,大家都是一起学习的。加油,共勉。
2016-01-04 回复 有任何疑惑可以回复我~

你这个程序好多语法错误:

  1. 第4行,定义方法怎么用int[]?

  2. 第7行,初始化成绩数组怎么是new int[j](⊙o⊙)…

  3. 第9行,条件是或,不是且

  4. 第17行,返回值是多余的

  5. 第23行,根本不用toString的方法

  • 给你一个改进建议,不要用一个新数组了,题目没有要求,你直接改变原数组就行了


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

Yesman012 提问者

非常感谢!
2016-01-04 回复 有任何疑惑可以回复我~
#2

Yesman012 提问者

感谢您的回答 int[] 是想返回一个数组
2016-01-04 回复 有任何疑惑可以回复我~
#3

Yesman012 提问者

请问您有没有办法把一个数组进行排序,除掉不满足条件的,然后生成新的数组,谢谢!!
2016-01-04 回复 有任何疑惑可以回复我~
int j = 0;
int[] newScores = new int[j];

你这里将newScores数组的大小设置为0了。所以运行到newScores[j] = scores[i];这里会报错 java.lang.ArrayIndexOutOfBoundsException(数组下标越界异常)。

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

Yesman012 提问者

非常感谢!
2016-01-04 回复 有任何疑惑可以回复我~
#2

Yesman012 提问者

请问您有没有办法把一个数组进行排序,除掉不满足条件的,然后生成新的数组,谢谢!!
2016-01-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪位大神帮我看看为什么我这个程序运行无结果,谢谢?

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