为了账号安全,请及时绑定邮箱和手机立即绑定

新手提问,求解答~

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

正在回答

2 回答

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

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


0 回复 有任何疑惑可以回复我~
#1

我不太冷 提问者

恩,我的代码还没实现排序输出,看了你的代码懂了。现在对于我的问题就是执行时我是先调用了sores,但没对他定义。所以要放在前面。然后我调试了一下你的代码,把数组定义放在Sore方法里面就显示错误,我这样理解对吗?如果不对 ,可否详细讲解一下,代码加个注解 ,非常感谢~~
2018-04-29 回复 有任何疑惑可以回复我~

重新开一楼吧,我们的目的是要求出符合条件的前三名的成绩,因为初始定义的数组有不符合条件([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方法定义数组,可以直接在方法中用。

望采纳

0 回复 有任何疑惑可以回复我~
#1

我不太冷 提问者

明白了 很感谢*^*
2018-04-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165150    人
  • 解答问题       17581    个

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

进入课程

新手提问,求解答~

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信