我正在制作一个小型测验程序,它从txt文件中读取单行答案,并将它们放入单独的数组中,其中一个是名称。
我试图使用索引号一次对多个数组进行排序。我可以对名称进行排序,但答案本身并不排序,例如:
本:
A
C
艾丹:
乙
˚F
我将能够改变他们的名字顺序,但无法弄清楚如何用他们的答案。有什么建议?
这是我到目前为止的代码:
String[] names = new String[4];
String[] answersA = new String[7];
String[] answersB = new String[7];
String[] answersC = new String[7];
String[] answersD = new String[7];
String[] answersE = new String[7];
String[] answersF = new String[7];
try {
Arrays.sort(names);
} catch (NullPointerException e) {
System.out.println("meh");
}
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
System.out.println(answersA[i]);
System.out.println(answersB[i]);
System.out.println(answersC[i]);
System.out.println(answersD[i]);
System.out.println(answersE[i]);
System.out.println(answersF[i]);
}
答案 0 :(得分:2)
如果您的数据在程序中逻辑分组,并且内聚单元具有语义值,则表示程序中的"object"。对象可以包含各种类型的数据,甚至包括其他对象。
对于这种情况,您已经描述了一名学生(带有名字)以及他们对各种测验问题的回答。这里的OOP方法是模拟封装这些数据点的Student类,而不是试图彼此独立地操纵它们。一个有用的练习是考虑你的程序将要解决的所有问题,并思考什么类型的事情构成了这个问题。您可以拥有Student
课程和Answer
课程来解决当前问题。您的学生有一个名称(只是纯文本)和一系列答案(您可以使用数组,尽管Java List API通常更容易使用)。如果您想跟踪问题陈述及其正确答案,您还可以拥有Question
课程。
如果您仍然需要能够对学生进行排序,例如,根据他们在测验中的表现,您可以使用Comparator
。找到如何使用它的示例应该不会太难。您还可以让Student
类实现Comparable
接口,以便按名称对学生进行排序。这将允许您使用Collections.sort
方法轻松地对学生集合进行排序。
答案 1 :(得分:0)
如果您可以使用数组列表,以下示例将非常有用:
List<Integer> ids = Arrays.asList(0, 1, 2, 3);
List<String> colors = Arrays.asList("blue", "yellow", "red", "black");
List<String> clothes = Arrays.asList("shoes", "pants", "boots", "coat");
//按ID排序
concurrentSort(ids, ids, colors, clothes);
//按颜色排序
concurrentSort(colors, ids, colors, clothes);
//按衣服排序
concurrentSort(clothes, ids, colors, clothes);
并发排序功能位于:
与此类似,您可以根据姓名对答案列表进行排序。