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

新手提问,求解答~

数组的定义为什么不能放在自定义的方法里面,而要放在main方法里面?代码如下,https://img1.mukewang.com/5ae532490001b93904450472.jpg

提问者:我不太冷 2018-04-29 10:47

个回答

  • 叫我皮卡丘
    2018-04-29 11:22:34
    已采纳

    不是数组放哪的问题,是整个程序逻辑有问题

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


  • 叫我皮卡丘
    2018-04-29 13:05:33

    重新开一楼吧,我们的目的是要求出符合条件的前三名的成绩,因为初始定义的数组有不符合条件([0,100])的成绩,所以我们重新开个数组来保存"[0,100]的成绩",也就是newScores,然后我们再从newScores找出前三名的成绩,由于sort默认是升序排列,所以我们需要对newScores数组中的元素逆序输出。数组放哪不重要,如果放里面的话也可以啊

    import java.util.*;
    public class HelloWorld {
         
        //完成 main 方法
        public static void main(String[] args) {
            HelloWorld hw = new HelloWorld();
            hw.Sort();
        }
         
        //定义方法完成成绩排序并输出前三名的功能
        public void Sort(){
            int[] scores = {89,-23,64,91,119,52,73};   //初始化数组
            int[] newSocres =new int[scores.length];   //存储符合条件的数组
            int length =0;    //由于不一定每个数都符号条件,用个变量存储符号条件的数的个数
            for(int i=0;i<scores.length;i++)  //遍历初始化数组,将其中符号条件的数组存到newSocres
                if(scores[i]>=0 && scores[i]<=100)
                    newSocres[length++] = scores[i];
            Arrays.sort(newSocres); //对符号条件的数组排序
            System.out.println("考试成绩的前三名为:");
            for(int i=newSocres.length-1;i>=newSocres.length-3;i--)  //逆序输出
                System.out.println(newSocres[i]);
        }

    你看,两种代码都是可以的,区别在于,如果在主函数中定义数组,在Sort方法实现时就需要将主函数的数组传递过去;如果在Sort方法定义数组,可以直接在方法中用。

    望采纳