import java.util.ArrayList;
import java.util.Scanner;
public class Assignment5
{
public static void initialize(ArrayList<String> names, ArrayList<Integer> scores)
{
// Create a Scanner object for keyboard input.
Scanner keyboard = new Scanner (System.in);
// Ask the user for the names and scores for 5 people.
System.out.println("Enter the name for score #1: ");
names.add(keyboard.next());
System.out.println("Enter the score for score #1: ");
scores.add(keyboard.nextInt());
System.out.println("Enter the name for score #2: ");
names.add(keyboard.next());
System.out.println("Enter the score for score #2: ");
scores.add(keyboard.nextInt());
System.out.println("Enter the name for score #3: ");
names.add(keyboard.next());
System.out.println("Enter the score for score #3: ");
scores.add(keyboard.nextInt());
System.out.println("Enter the name for score #4: ");
names.add(keyboard.next());
System.out.println("Enter the score for score #4: ");
scores.add(keyboard.nextInt());
System.out.println("Enter the name for score #5: ");
names.add(keyboard.next());
System.out.println("Enter the score for score #5: ");
scores.add(keyboard.nextInt());
}
public static void sort(ArrayList<String> names, ArrayList<Integer> scores)
{
}
public static void display(ArrayList<String> names, ArrayList<Integer> scores)
{
for (int index = 0; index < names.size(); index++)
{
String userNames = names.get(index);
System.out.println(names.get(index));
}
for (int index = 0; index < scores.size(); index++)
{
Integer userScores = scores.get(index);
System.out.println(scores.get(index));
}
}
public static void main(String[] args)
{
// Create an ArrayList for names and scores.
ArrayList<String> names = new ArrayList<String>();
ArrayList<Integer> scores = new ArrayList<Integer>();
// Call the three methods.
initialize(names, scores);
sort(names, scores);
display(names, scores);
}
}
编写一个程序,记录虚构游戏的高分数据。该程序将要求用户输入五个名称和五个分数。它会将数据存储在内存中,然后按分数打印出来。
程序的输出应该大致如下:
输入得分#1的名称:Suzy
输入得分#1的分数:600
输入得分#2的名称:Kim
输入得分#2得分:9900
输入得分#3的名称:Bob
输入得分#3得分:1012
输入得分#4的名称:Armando
输入得分#4的分数:8000
输入得分#5的名称:Tim
输入得分#5的得分:514
热门得分手:
金:9900Armando:8000
鲍勃:1012Suzy:600
蒂姆:514要求
数据必须存储在两个ArrayLists中:一个名为names的字符串ArrayList和一个名为scores的整数ArrayList。必须在main方法中声明这些ArrayLists。
所有用户输入都应该在名为InitializeArrays的方法中完成。它应该有以下签名:
public static void InitializeArrays(ArrayList names,ArrayList scores)
您应该编写一个函数,根据得分数组列表中的值对两个数组列表进行排序。这是作业中更具概念性的部分之一。您希望对得分数组列表进行排序,同时更改名称数组列表,以便名称继续按索引与各自的得分对齐。在上面的示例数据中,当得分9900移动到得分数组列表的第一个元素时,名称“Kim”也应该移动到名称数组列表的顶部。该函数应具有以下签名:
public static void sort(ArrayList names,ArrayList scores)
最后,您应该编写一个显示两个数组列表内容的方法。它应该有以下签名:
public static void display(ArrayList names,ArrayList scores)
主要方法应该很短。它应该只声明并初始化两个数组列表,然后调用这三个方法。
.......截至目前,我只创建了两个arraylists,可以存储名称和分数。我不确定如何正确排序和显示它们。我注意到人们已经为类似的情况创建了比较器,但我们还没有在课堂上介绍过。
答案 0 :(得分:1)
尝试使用Map我认为您可以轻松实现目标
Map<String,Integer>
以字符串形式存储名称并以整数得分,并使用比较器
Set<Entry<String,Integer>> s=yourMap.entrySet();
List<Entry<String,Integer>> l=new ArrayList<Entry<String,Integer>>(s);
Collections.sort(l,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> arg0,
Entry<String, Integer> arg1) {
return (arg0.getValue().compareTo(arg1.getValue()));
}
});
以下代码将完全满足您的要求,只需在您的日食中复制并运行它
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class Sample
{
public static void main(String[] args)
{
Map<String,Integer> dataMap=new HashMap<String, Integer>();
Scanner keyboard1 = new Scanner (System.in);
Scanner keyboard2 = new Scanner (System.in);
// Ask the user for the names and scores for 5 people.
for(int i=1;i<=5;i++)
{
System.out.println(i+". Enter the name ");
String name= keyboard1.next();
System.out.println(i+". Enter the score");
int score=keyboard2.nextInt();
dataMap.put(name, score);
}
Set<Entry<String,Integer>> s=dataMap.entrySet();
List<Entry<String,Integer>> l=new ArrayList<Entry<String,Integer>>(s);
Collections.sort(l,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> arg0,
Entry<String, Integer> arg1) {
return (arg1.getValue().compareTo(arg0.getValue()));
}
});
for(Map.Entry<String, Integer> entry:l){
System.out.println("Name of Student== "+entry.getKey()+" and his Score=="+entry.getValue());
}
}
}
注意:如果您对答案感到满意,请进行投票并接受答案