问答详情
源自:7-1 编程练习

求大神指导下哪里出错了,为什么运行有问题

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

        HelloWorld hello=new HelloWorld();

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

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

hello.show(nums);

}

public void show(int[] nums){

Arrays.sort(nums);

int sum=0;

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

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

continue;

}

sum++;

if(sum>3){

break;

}

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

}

}

}      

运行结果:

考试成绩的前三名为
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at HelloWorld.show(HelloWorld.java:15)
at HelloWorld.main(HelloWorld.java:9)

提问者:戏剧人生3188129 2016-05-30 10:13

个回答

  • 地埃尘
    2016-05-30 11:30:47
    已采纳

    循环从nums.length-1开始

  • piyang88
    2016-05-30 16:20:16

    for(int i=nums.length;i>=0;i--)数组越界了。应该为:for(int i=nums.length-1;i>=0;i--)

  • jinjin71
    2016-05-30 11:23:04

    package com.imooc;

    import java.util.Scanner;

    /*

     * 功能:为指定的成绩加分,直到分数大于等于60为止

     * 输出加分前的成绩和加分后的成绩,并且统计加分的次数

     * 步骤:

     * 1.定义一个变量,用来统计加分的次数

     * 2.使用循环为成绩加分

     * 3.每次执行循环时加1分,并且统计加分的次数

     * 

     * 使用Scanner工具类来获取用户输入的值

     * Scanner类位于java.util包中,使用时需要导入此包

     * 步骤:

     * 1.导入java.util.Scanner

     * 2.创建Scanner对象

     * 3.接收并保存用户输入的值

     */

    public class Demo01 {

    public static void main(String[] args){

    Scanner input=new Scanner(System.in); //创建Scanner对象

    //print和println区别:println输出信息后会换行,而print不会换行

    System.out.println("请输入您的考试成绩:");

    int score=input.nextInt(); //获取成绩信息并保存在变量score中

    int count=0;  //统计次数

    System.out.println("加分前的成绩:"+score);

    while(score<60){

    score++;//每次循环加1分

    count++;//统计加分的次数

    }

    System.out.println("加分后的成绩:"+score);

    System.out.println("共加了"+count+"次!");

    }

    }