根据用户输入对数组列表进行排序?

时间:2017-05-04 19:50:30

标签: arrays sorting arraylist

所以我有一个数组列表,其中包含最喜欢的颜色列表。例如,数组读取为红色,蓝色,绿色。但现在我希望用户能够“排名”他们喜欢的颜色,因为当前列表不是他们的个人排名。那么我如何将数组列表中的一个元素移动到另一个位置。我希望程序说“列表中的第一项是红色的,你会在哪里排名?”然后他们可以说他们想要在第3位。然后依此类推,直到他们对所有人进行排名。问题是我是阵列列表的新手,不知道如何做到这一点。我会使用Collections.sort(数组列表); ?我怎么能调用数组的元素才能问他们?就像是(在这里使用伪代码)第1行/数组列表的元素1?

到目前为止的代码(最后一部分并没有真正正常工作,但你会看到我要去的地方)

Scanner input = new Scanner(System.in);
        ArrayList <String> favoriteColors = new ArrayList <String>();
        boolean repeat = true;
        while (repeat) {

            System.out.println("Enter the name of the file which contains your favorite colors ");
            String fileName = input.nextLine().trim();

            try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {

                String line;
                System.out.println("Here are your favorite colors according to the file:");  
                 while ((line = reader.readLine()) != null) {    
                   System.out.println(line);   
                   favoriteColors.add((line));
                 }                                                

                 System.out.println("Add more? (y/n)");
                 if (input.next().startsWith("y")) {
                     System.out.println("Enter : ");
                     favoriteColors.add(input.next());
                 } else {
                     break;
                 }
                 for (int i = 0; i < favoriteColors.size(); i++) {
                     System.out.println(favoriteColors);
                 }

                     System.out.println("Remove a color?");

                     if (input.next().startsWith("y")) {
                         System.out.println("Which color would you like to remove");
                            String removeColor = input.nextLine();
                            int index = favoriteColor.indexOf(removeColor);
                            favoriteColor.remove(index);
                            System.out.println(favoriteColor);
                     }

由于

1 个答案:

答案 0 :(得分:0)

&#34;我希望程序说“列表中的第一项是红色的,你会在哪里排名?&#39;然后他们可以说他们想要在第3位。然后依此类推,直到他们对所有人进行排名。&#34;

要执行此操作,您需要创建一个与原始列表长度相同的新列表,但其中的每个值都是一些空白颜色,然后您将浏览原始列表,询问他们将每种颜色排列在哪里,并将颜色插入到他们将其排名的位置。您可以使用&#34; .get(index)&#34;从数组列表中获取值。一个例子:
        ArrayList a = new ArrayList();         a.get(5)

这在技术上会抛出一个错误,因为索引5上没有元素,但除了这个例子之外还有一个元素。