package test;
//名前 国語 英語 数学 科学 社会
// 中島 80, 90, 30, 50, 70
// 清水 90, 94, 45, 50, 60
// 住石 30, 40, 40, 100, 100
//谷岡 70, 40, 0, 100, 100
import java.util.*;
public class Test15 {
private static final int JAPANESE = 1;
private static final int ENGLISH = 2;
private static final int MATH = 3;
private static final int SCIENCE = 4;
private static final int SOCIOLOGY = 5;
public static void main(String[] args) {
LinkedList<String[]> scoreList = input();
output(scoreList);
}
private static LinkedList<String[]> input() {
Scanner scanner = new Scanner(System.in);
String[] arr = new String[6];
LinkedList<String[]> list = new LinkedList<>();
boolean flag = true;
while (flag) {
System.out.println("NEXT PEOPLE : ");
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.next().replace(",", "");
if (arr[0].equals("over")) {
flag = false;
break;
}
}
String[] arr2 = arr.clone();
list.add(arr2);
}
list.removeLast();
return list;
}
private static void output(LinkedList<String[]> list) {
Scanner scanner = new Scanner(System.in);
System.out.println("INPUT KEYWORD");
while (true) {
String input = scanner.next();
if (input.equals("名前")) {
for (String[] s : list) {
System.out.println(Arrays.toString(s));
}
} else if (input.equals("国語")) {
scoreSort(list, JAPANESE);
} else if (input.equals("英語")) {
scoreSort(list, ENGLISH);
} else if (input.equals("数学")) {
scoreSort(list, MATH);
} else if (input.equals("科学")) {
scoreSort(list, SCIENCE);
} else if (input.equals("社会")) {
scoreSort(list, SOCIOLOGY);
} else if (input.equals("総計")) {
System.out.println("名前 総計");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)[0] + " ");
int sum = 0;
for (int j = 1; j <= 5; j++) {
sum += Integer.parseInt(list.get(i)[j]);
}
System.out.println(sum);
}
} else if (input.equals("over")) {
break;
}
}
}
private static void scoreSort(LinkedList<String[]> list, final int i) {
Collections.sort(list, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.parseInt(o2[i]) - Integer.parseInt(o1[i]);
}
});
for (String[] s : list) {
System.out.println(s[0] + " " + s[i]);
}
}
}
还是有问题,总分没有排序,再改!
package test;
//名前 国語 英語 数学 科学 社会
// 中島 80, 90, 30, 50, 70
// 清水 90, 94, 45, 50, 60
// 住石 30, 40, 40, 100, 100
//谷岡 70, 40, 0, 100, 100
import java.util.*;
public class Test15 {
private static final int JAPANESE = 1;
private static final int ENGLISH = 2;
private static final int MATH = 3;
private static final int SCIENCE = 4;
private static final int SOCIOLOGY = 5;
public static void main(String[] args) {
LinkedList<String[]> scoreList = input();
output(scoreList);
}
private static LinkedList<String[]> input() {
Scanner scanner = new Scanner(System.in);
String[] arr = new String[6];
LinkedList<String[]> list = new LinkedList<>();
boolean flag = true;
while (flag) {
System.out.println("NEXT PEOPLE : ");
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.next().replace(",", "");
if (arr[0].equals("over")) {
flag = false;
break;
}
}
String[] arr2 = arr.clone();
list.add(arr2);
}
list.removeLast();
return list;
}
private static void output(LinkedList<String[]> list) {
Scanner scanner = new Scanner(System.in);
System.out.println("INPUT KEYWORD");
while (true) {
String input = scanner.next();
if (input.equals("名前")) {
for (String[] s : list) {
System.out.println(Arrays.toString(s));
}
} else if (input.equals("国語")) {
scoreSort(list, JAPANESE);
} else if (input.equals("英語")) {
scoreSort(list, ENGLISH);
} else if (input.equals("数学")) {
scoreSort(list, MATH);
} else if (input.equals("科学")) {
scoreSort(list, SCIENCE);
} else if (input.equals("社会")) {
scoreSort(list, SOCIOLOGY);
} else if (input.equals("総計")) {
TotalSort(list);
} else if (input.equals("over")) {
break;
}
}
}
private static void scoreSort(LinkedList<String[]> list, final int i) {
Collections.sort(list, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
//降序
return Integer.parseInt(o2[i]) - Integer.parseInt(o1[i]);
//升序
//return Integer.parseInt(o1[i]) - Integer.parseInt(o2[i]);
}
});
for (String[] s : list) {
System.out.println(s[0] + " " + s[i]);
}
}
private static void TotalSort(LinkedList<String[]> list) {
TreeMap<String, Integer> treeMap = new TreeMap<>();
for (int i = 0; i < list.size(); i++) {
int sum = 0;
for (int j = 1; j <= 5; j++) {
sum += Integer.parseInt(list.get(i)[j]);
}
treeMap.put(list.get(i)[0], sum);
//System.out.println(treeMap);
}
ArrayList<Map.Entry<String, Integer>> list2 = new ArrayList<>(treeMap.entrySet());
Collections.sort(list2, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//降序
return o2.getValue().compareTo(o1.getValue());
//return o2.getValue()- o1.getValue();
//升序
//return o1.getValue()- o2.getValue();
}
});
for (Map.Entry<String, Integer> entry : list2) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}