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

求助,错在哪里?

package chapter;
import java.util.Arrays;
/**
* Created by 钊哥 on 2017/5/14.
*/
public class nineteen {
   public static void main(String args[]){
       int []scores= new int[]{89,-23,64,91,119,52,73};
       nineteen zhao=new nineteen();
   zhao.xin(scores);
   }
public void xin(int[]scores){
       Arrays.sort(scores);
       int nums=0;
for(int i=scores.length;i>=0;i--) {
   if (nums > 3) {
       System.out.println("考试成绩前"+nums+"名为:");
       break;
   }
   if (scores[i] >= 100 || scores[i] <= 0) {
       continue;
   } else {
       nums++;
       System.out.println(scores[i]);
   }
}
}
}



正在回答

3 回答

不是没有导入包的问题,是数组越界。

package exercise;


import java.util.Arrays;


public class Nineteen {


public static void main(String args[]){

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

      Nineteen zhao=new Nineteen();

      zhao.xin(scores);

  }

public void xin(int[]scores){

      Arrays.sort(scores);

      int nums=0;

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

  if (nums >= 3) {

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

      break;

  }

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

      continue;

  } else {

      nums++;

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

  }

}

  }

}

给你改正了两处

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

Revolt 提问者

非常感谢!
2017-05-16 回复 有任何疑惑可以回复我~
#2

Revolt 提问者

为什么我之前那样写会出现数组越界呢?
2017-05-16 回复 有任何疑惑可以回复我~
#3

慕盖茨038235 回复 Revolt 提问者

因为数组的下标是从0开始的,下标范围是0---(length-1)(length是数组的长度)。就拿你这个数组来说,数组长度为7,下标是0-6。如果你遍历的时候i=scores.length,执行第一次循环的时候,你的输出中的score[7]是不成立的,它会提示你数组越界。
2017-05-17 回复 有任何疑惑可以回复我~

有啊

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7

at chapter.nineteen.xin(nineteen.java:20)

at chapter.nineteen.main(nineteen.java:10)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

运行的时候弹出这个

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


import java.util.Arrays;

你没有导入数组包

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

qq_喷泉_0

楼上正解
2017-05-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165456    人
  • 解答问题       17585    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

求助,错在哪里?

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