2017-05-04 10 views
0

私はお気に入りの色のリストを含む配列リストを持っています。たとえば、配列は赤、青、緑のいずれかを読み取ります。しかし、現在のリストは個人的なランキングではないので、ユーザーは自分の好きな色を「ランク付け」できます。では、配列リストの要素を別の場所に移動するにはどのようにすればよいでしょうか。私はプログラムに「リストの最初の項目は赤で、どこにランクを付けますか?彼らは第3の場所でそれを望んでいると言うことができます。そして、それらのすべてを順位付けするまで続きます。問題は私がArray Listsを初めて使ったことで、これを行う方法が分からないことです。 Collections.sort(配列リスト)を使用していますか? ?配列の要素を呼び出すために、どのように配列の要素を呼び出すことができますか?それは配列リストの1行目/ 1要素目のようなものですか?ユーザ入力に基づいて配列リストをソートしますか?

コードこれまで(最後の部分のdoesntのが本当に正常に動作しますが、私は行くことにしようとしている場所が表示されます)

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

「私はプログラムは「言いたいですリストの最初の項目は赤ですが、どこにランクを付けますか?彼らは3位でそれを望んでいると言うことができます。

これを行うには、元のリストと同じ長さの新しいリストを作成したいが、その中の各値は空白の色であるため、元のリストを通って各色をランク付けし、ランク付けする位置に色を挿入します。 ".get(index)"を使って配列リストから値を得ることができます。例:
ArrayList a = new ArrayList(); a.get(5)

これは、aがインデックス5に要素を持たないので、これは技術的にエラーをスローしますが、それはこの例のポイントの外にあります。

+0

ありがとうございます、新しいリストを元のものと同じ長さにする簡単な方法はありますか?それは設定された量ではないので、色を追加したり、1つを減算することができます –

+0

リストの現在の長さを簡単に調べる方法があります。それは ".size()"と呼ばれています。 ArrayListのドキュメントは、そのために定義されているすべての関数を見ることができます。 https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html –

関連する問題