Java数组越界问题

3 篇文章 0 订阅
3 篇文章 0 订阅

测试了 好久 总有错误,后来才发现是数组越界了 分享一下,希望能对大家有帮助


//时间: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]);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值