测试了 好久 总有错误,后来才发现是数组越界了 分享一下,希望能对大家有帮助
//时间:2013.10.30
//程序功能: 对学生成绩排序并且对应输出
//通过两个数组分别存储名字 和 成绩 然后降序排列输出
import java.util.Scanner;
public class StudentSort {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.println(“Enter the number of students:”);
int number = input.nextInt(); //输入学生的个数
String name[] = new String[number]; //申请名字数组空间
double score[] = new double[number]; //申请分数数组空间
//将名字和成绩存入数组
for (int i = 0;i< number;i++){
System.out.println(“Enter the name : “);
name[i] = input.next();
System.out.println(“Enter the score : “);
score[i] = input.nextDouble();
}
//排序
for(int k = 0;k<number-1;k++){ //for循环 这里原先写的是 for(int k = 0;k<number;k++)
double temp;
String change;
if(score[k] < score[k+1]){ //这里的score的下标 包含是 score[k+1] 所以 导致了越界
temp = score[k];
score[k] = score[k+1];
score[k+1] = temp;
change = name[k];
name[k] = name[k+1];
name[k+1] = change;
}
}
//输出
for(int m =0 ;m< name.length ;m++)
System.out.println(name[m] +” “+score[m]);
}
}