求助,错在哪里?

来源:7-1 编程练习

Revolt

2017-05-14 12:50

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回答

  • 慕盖茨038235
    2017-05-16 12:55:00
    已采纳

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

    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]);

      }

    }

      }

    }

    给你改正了两处

    慕盖茨038... 回复Revolt

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

    2017-05-17 15:30:15

    共 3 条回复 >

  • Revolt
    2017-05-15 08:52:57

    有啊

    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)

    运行的时候弹出这个

  • 慕婉清0689395
    2017-05-14 13:09:40


    import java.util.Arrays;

    你没有导入数组包

    qq_喷泉_...

    楼上正解

    2017-05-14 21:38:30

    共 1 条回复 >

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

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

1165523 学习 · 17586 问题

查看课程

相似问题