新手提问,求解答~
数组的定义为什么不能放在自定义的方法里面,而要放在main方法里面?代码如下,
数组的定义为什么不能放在自定义的方法里面,而要放在main方法里面?代码如下,
2018-04-29
不是数组放哪的问题,是整个程序逻辑有问题
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,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方法定义数组,可以直接在方法中用。
望采纳
举报