请问 这样写错在哪里?谢谢!

来源:7-1 编程练习

半神隐的漂砾

2015-06-29 20:04

package com.Java;

import java.util.Arrays;

public class HelloWorld {
 
 public static void main(String[] args) {
  
  int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73};
  
  System.out.println("成绩前三名为:");
  
  HelloWorld hello = new HelloWorld();
  
  hello.sortAndPrint(scores);
   
 }
 
 public void sortAndPrint(int[] scores){
  
 Arrays.sort(scores);
 
 int num=0;
 
 for (int i=scores.length ;i>=0;i--){
  
  if (scores[i]>0 && scores[i]<=100){
   
   System.out.println(scores[i]);
    
   num++;
   
   }  else {
   
   continue;
   
   }
  
  if (num==3){break;}
  
  }
  
 }
 
 
}

运行结果


成绩前三名为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
 at com.Java.HelloWorld.sortAndPrint(HelloWorld.java:27)
 at com.Java.HelloWorld.main(HelloWorld.java:15)

写回答 关注

3回答

  • Bad__Guy
    2015-07-03 11:18:58

    下标越界


  • 英俊不凡
    2015-06-29 23:49:41

    length-1

  • 半神隐的漂砾
    2015-06-29 20:22:09

    找到错误了,当数组有7个数的时候,scores.length=7,而数组中最高分的 数是 scores[6],

    所以 int i=scores.length-1


Java入门第一季(IDEA工具)升级版

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

1165172 学习 · 17581 问题

查看课程

相似问题