进行排序的那段代码中,两个for循环的判断条件“m < j -1”,“n <= j - m - 1”写错了。
应该是:
for (int m = 0; m < j ; m++)
{
for (int n = 0; n < j - m - 1; n++)
{
for循环中,如果参数 i (你这里是m和n)是从0开始的话,那么小于号 “<” 右侧的值就是你要循环的次数。(所以for循环里的判断条件我一般用 “<” ,更直观一点)
修改后排序成功。
顺便提点建议:
对于简单的for循环,建议使用以下格式
for (int i = 0; i < [你想要循环的次数] ; i++)
{
//代码
}
在代码 "Scanner scan = new Scanner(System.in);" 之后可以增加一条打印语句:"System.out.println("请输入学生信息");"。
"Student s[];" 建议写成"Student[] s;" ,也就是"[数据类型] [变量] "的格式。这样更规范。
循环体中的 "Student t;" 建议移动到整个循环体外。(个人习惯,不喜请无视……)
这种按成绩排序的类,要 implements Comparable 接口。具体百度 Comparable ,就能找到你想要的答案。