我目前正在为一个学校项目工作,确实很挣扎。我应该选择对一组Student对象进行排序,然后按选择排序顺序显示它们。
创建一个大小为10的数组,并分配学生详细信息(姓名, BroncoId ,年龄和总分 >)到数组。执行选择排序,以根据学生的总成绩以降序对其进行排序。
a。步骤:
i。创建学生列表(使用Java中的Random类生成年龄(15-25)和总年龄(0-100))
ii。以表格格式打印学生列表
iii。根据学生的总成绩进行选择排序
我目前停留在的位置正在进行选择排序。我了解如何创建选择排序,但是对于这种实现,我似乎无法将其翻译。
我的选择排序代码:
+-----------------------+--------+-------+
| "DateTimeS" | "High" | "Low" |
+-----------------------+--------+-------+
| "2018-09-07 23:58:00" | "89" | "87" |
| "2018-09-07 23:57:00" | "88" | "85" |
| "2018-09-07 23:56:00" | "86" | "82" |
| . | | |
| etc... | | |
+-----------------------+--------+-------+
运行此代码时,控制台将返回:
我寻求辅导以期解决此问题,但是我的辅导员给了我一些不实用的建议。在会议结束时我们都很沮丧。
我的打印代码:
public static Student[] selectionSort(Student[] studentList)
{
for(int i = 0; i <studentList.length-1; i++)
{
int minIndex = studentList[i].getGrades();
int pos = i;
for(int j = i + 1; j < studentList.length-2; j++)
{
if(studentList[j].getGrades() > studentList[minIndex].getGrades())
{
minIndex = studentList[j].getGrades();
pos = j;
}
}
int temp = studentList[pos].getGrades();
studentList[pos] = studentList[i];
int k = studentList[i].getGrades();
k = temp;
}
return studentList;
}
作为一个出于激情的话题,我试图制作一种有趣的打印方法。我的问题是,例如,我真的不知道如何解析和格式化155个字符的字符串。我该怎么做才能做到这一点?
我希望程序输出一个对象名称行,例如:
49个字符
49个字符
…
剩下的一切
它可能永远不会超过三行,但是嘿,谁说我不能给出这样的例子?我要在while循环的标题中放入什么来完成此操作?
PS: 如果需要,这是学生班。
public static void printStudentInfo(Student[] students)
{
System.out.println("Name: AGE: idNumber: Score:");
for(Student student: students)
{
if(student.getName().length() <= 49)
System.out.printf("%-50s %-5d %-10s %-4d\n", student.getName(), student.getAge(), student.getID(), student.getGrades() );
else
{
System.out.printf("%-50s %-5d %-10s %-4d\n", student.getName().substring(0,48), student.getAge(), student.getID(), student.getGrades() );
System.out.println();
int i = 0;
while(i <= student.getName().length())
{
System.out.printf("%-50s", student.getName().substring(49 +48*i, 97+48*i) );
System.out.println();
i++;
}
}
}
}
答案 0 :(得分:2)
欢迎来到马修。
我认为与其给您解决方案,不如给您一个解决问题的方法,可能会很有用。
软件开发的良好做法是将问题分解为非常小的组件,确保每个组件都能正常工作(通过单元测试),然后从这些组件构建解决方案。
根据这种做法,我建议您执行以下操作:
如果按照此过程进行操作,那么最终您将获得一个可以完全理解,可以正常工作,可维护并且可以重构的系统。它还有另一个非常显着的好处:这意味着当您带着一个问题来到SO时,您会问的是您不知道如何解决而不是“为什么我的代码无法正常工作”的问题。特定的问题往往会得到更好,更快的答复。
在您的情况下,我将从交换项目的方法开始(提示:您的代码不起作用,编写单元测试时您会很快发现该代码),然后继续查找交换项目中最小的项目。子列表。然后是使用这两种方法将最小的项目放在子列表的开头的方法。最后,是一种对所有子列表逐步执行该方法的方法。在继续将它们放在一起之前,请确保每种方法都能正常工作,包括检查参数的有效性。