2017-05-04 150 views
0

所以我有一個數組列表,其中包含一個喜歡的顏色列表。例如,數組讀取爲紅色,藍色,綠色。但現在我希望用戶能夠「排列」他們喜歡的顏色,因爲當前列表不是他們的個人排名。那麼我將如何將數組列表中的一個元素向下移動到另一個位置。我想讓程序說「列表中的第一項是紅色的,你會在哪裏排名?」然後他們可以說他們希望在第三名。然後等到他們排列所有這些。問題是我是新的陣列列表,不知道如何做到這一點。我會使用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); 
        } 

感謝

+0

你可以發佈你有什麼代碼,你做了什麼?至少需要用於初始化數組列表的後期代碼。你使用的是Python列表,numpy數組還是數組? – imp9

+0

@ imp9只是加了我的代碼 –

回答

0

「我希望該計劃說「的名單上的第一個項目是紅色的,你會在哪裏排名?然後他們可以說他們希望在第三位,然後等到他們排在第三位。「

要做到這一點,你需要創建一個新的列表,這個列表的長度與原始列表的長度相同,但其中的每個值都是一些空的顏色,然後你將通過原始列表,詢問它們在哪裏會對每種顏色進行排名,並將顏色插入到他們將排名的位置。您可以使用「.get(index)」從數組列表中獲取值。一個例子:
ArrayList a = new ArrayList(); a.get(5)

這會在技術上拋出一個錯誤,因爲a在索引5處沒有元素,但這不是本示例的要點。

+0

謝謝,後續 - 是否有一種簡單的方法可以使新列表的長度與原始列表相同?因爲它不是一個固定的數量 - 他們可以添加一個顏色或者減去一個顏色 –

+0

有一個簡單的方法可以找出目前列表的時間。它被稱爲「.size()」。這裏是ArrayList的文檔,你可以看到爲它定義的所有函數。 https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html –

相關問題