大家看看我这个是怎么回事啊?我这个 运行不出来但是看不出哪里有错

来源:7-1 编程练习

qq_长山_0

2018-07-27 20:33

import java.util.Arrays;public class HelloWorld {        //完成 main 方法    public static void main(String[] args) {        int[] scores = {89,-23,64,91,119,52,73};      //  system.out.println("考试成绩的前三名为:")        HelloWorld hello = new HelloWorld();        hello.marks(scores);                            }        //定义方法完成成绩排序并输出前三名的功能    public void marks(int [] scores){        int [] arrays={};        int count = 0;        Arrays.sort(scores);        for(int i=scores.length-1;i>=0;i--)        {            if(scores[i]<0 || scores[i]>100){                continue;            }            else{            count++;            for(int j=0;j<3;j++)            arrays[j]=scores[i];            if (count==3)                break;            }        }        System.out.println("考试成绩的前三名为"+Arrays.toString(arrays));           }

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

      //  system.out.println("考试成绩的前三名为:")

        HelloWorld hello = new HelloWorld();

        hello.marks(scores);

        

        

        

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    public void marks(int [] scores){

        int [] arrays={};

        int count = 0;

        Arrays.sort(scores);

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

        {

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

                continue;

            }

            else{

            count++;

            for(int j=0;j<3;j++)

            arrays[j]=scores[i];

            if (count==3)

                break;

            }

        }

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

       

    }

    


写回答 关注

5回答

  • qq_摸摸头_4
    2018-07-30 10:08:02
    已采纳

    spacer.gif

    另外,你运行的效果应该是报错数组下限超出范围吧,因为你定义的arrays【】给的是个{}---空,然后我给你改了下,自己看下效果是怎样的

    qq_长山_... 回复qq_摸摸头...

    嗯嗯懂得了,非常感谢

    2018-08-08 11:21:29

    共 3 条回复 >

  • qq_摸摸头_4
    2018-07-30 10:09:25

    https://img2.mukewang.com/5b5e73420001042c05280291.jpg看图就明白了

    qq_长山_...

    明白了明白了 谢谢谢谢

    2018-07-30 14:23:40

    共 1 条回复 >

  • qq_摸摸头_4
    2018-07-30 10:04:10

    import java.util.Arrays;

    public class HelloWorld {

    // 完成 main 方法

    public static void main(String[] args) {

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

    // system.out.println("考试成绩的前三名为:")

    HelloWorld hello = new HelloWorld();

    hello.marks(scores);

    }

    // 定义方法完成成绩排序并输出前三名的功能

    public void marks(int[] scores) {

    // int[] arrays = {};

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

    int count = 0;

    Arrays.sort(scores);

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

    {

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

    continue;

    }

    else {

    count++;

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

    /*

    * for (int j = 0; j < 3; j++)

    * arrays[j] = scores[i];

    */

    /*

    * 首先你这个for循环没有{}划分范围,其次我不知道你为什么又定义一个数组arrays用来存储成绩的前三名,

    * 既然定义了count,让它<=3,这就可以直接控制scores数组的输出 ,再然后你这个内for循环的作用你仔细看看,

    * 它在外for循环里面,就算你运行成功了,也是每次将同一个值赋给不同下标的arrays数组值

    */

    if (count == 3)

    break;

    }

    }

    // System.out.println("考试成绩的前三名为" + Arrays.toString(arrays));

    }

    }


    qq_长山_...

    我做这个题的时候想起来前面的 直接用这个函数输出数组了。就想用这个方法

    2018-07-30 14:23:25

    共 1 条回复 >

  • zczzsh
    2018-07-29 16:25:43

    在你的代码的循环中,你用了双重循环,当分数满足在0到100分之间时,你将分数用一个循环输入到arrays数组中,但是实际上此时的scores[i]是一个值,你用j的这个循环将同样的值给了arrays数组,也就是说else执行完过后,arrays数组中是三个相同的值,而跳到外层循环之后,再次遇到满足条件的scores[i]时,会覆盖掉你原来的arrays数组,所以你的代码输出的结果是第三名的分数,并且是三次吧。我没运行你的代码,只是看了看,问题应该是在这。

    qq_长山_... 回复zczzsh

    恩恩好的谢谢

    2018-08-01 16:29:05

    共 4 条回复 >

  • 曾忆城
    2018-07-28 03:10:15
    import java.util.Arrays;public class HelloWorld {        //完成 main 方法    public static void main(String[] args) {	   int[] scores= {89,-23,64,91,119,52,73};		System.out.println("考试成绩的前三名为:");		HelloWorld scoresTop3=new HelloWorld();//创建对象		scoresTop3.showTop3(scores);    }        //定义方法完成成绩排序并输出前三名的功能    	public void showTop3(int[] scores) {		Arrays.sort(scores);//排序数组		int num =0;//保存有效成绩		for(int i=scores.length-1;i>=0;i--) {			if(scores[i]<0||scores[i]>100) {				continue;			}			num++;			if(num>3) {				break;			}			System.out.println(scores[i]);					}	}}


    qq_长山_...

    你这就是答案啊,我这个哪里错了?

    2018-07-28 16:59:38

    共 1 条回复 >

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

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

1165172 学习 · 17581 问题

查看课程

相似问题