Java:从列表中删除单词

时间:2016-01-27 09:13:50

标签: java arraylist

我正在制作一个声音测试,你可以制作自己的vocables和他们的翻译。我遇到了一个问题,如果您有不同的翻译可供选择,我不知道如何制作选项。

  public static void WritingYourVocables(List<VocableList> data) {

  String antal = JOptionPane.showInputDialog(null, "Write the numbers of vocables you want to have");
  int temp  = Integer.parseInt(antal);

  for (int i = 0; i < temp; i++) {

     String Vocable = JOptionPane.showInputDialog(null, "Write a vocable");
     String Translation = JOptionPane.showInputDialog(null, "Write the translation for the vocable");

     data.add(new VocableTest(Vocable, Translation));

  }            
  }//WritingYourVocables ends

上面的方法是你在测试中编写你想要的vocable数量的方法,然后你编写你的vocable及其翻译。

  public static void PlayWithAlternatives(List<Alternatives> data) {

  int a = data.size();

  for (int n = 0; n < a; n++) {

     int Translate2;
     int Translate3;

     int Translate1 = (int)(Math.random() * data.size()) ;

     do {
         Translate2 = (int)(Math.random() * data.size()) ;

     }while (Translate1 == Translate2);

     do{
         Translate3 = (int)(Math.random() * data.size()) ;

     }while (Translate1 == Translate3 || Translate2 == Translate3);


        int answer [] = {Translate1, Translate2, Translate3};

        int Right = (int)(Math.random() * 3) ;


        int choice = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the translation of the vocable? " + 
                                                               data.get(answer[Right]).getVocable() +
                                                               "\n1: " + data.get(Translate1).getTranslation() + 
                                                               "\n2: " + data.get(Translate2).getTranslation() + 
                                                               "\n3: " + data.get(Translate3).getTranslation()));                                                             
           switch(choice){

              case 1:

                 if (answer[Right] == Translate1){

                    data.remove(?);

                    JOptionPane.showMessageDialog(null, "Right");

                 }else{ JOptionPane.showMessageDialog(null, "Wrong");
                 }

              break;

              case 2:

                 if (answer[Right] == Translate2){

                    data.remove(?);

                    JOptionPane.showMessageDialog(null, "Right");

                 }else{ JOptionPane.showMessageDialog(null, "Wring");
                 }


              break;

              case 3:

                 if (answer[Right] == Translate3){

                    data.remove(?);

                    JOptionPane.showMessageDialog(null, "Right");
                 }else{ JOptionPane.showMessageDialog(null, "Wrong");
                 }

              break;

              default:
              JOptionPane.showMessageDialog( null, "Wrong choice!");                                           

           }        
  }

  }//PlayingWithAlternatives ends  

上述方法是一种用于播放随机生成的声音的翻译的不同替代方法的方法。如果玩家选择了正确的替代方案,则应该删除该替代方案所连接的vocable。要删除vocable我使用&#34; data.remove()&#34;,问题是我不知道在括号中写什么来删除vocable。

请帮忙

3 个答案:

答案 0 :(得分:3)

有更好的方法来处理您的设计,但就您的问题而言,只需删除您首先要求的声音。

data.remove(answer[Right]);

答案 1 :(得分:0)

从ArrayList中删除元素:

您使用:

arrlist.remove(index);

答案 2 :(得分:0)

List.remove的参数是要删除的事物的索引,或者是要删除的对象。

看起来Translate1Translate2Translate3是列表中的索引 - 所以请致电

data.remove(Translate1); // or whichever variable is correct.

如果将TranslateN变量放在数组中,您可以让自己的生活更轻松:

int[] Translate = new int[3];

因此,将所有Translate1替换为Translate[0],将Translate2替换为Translate[1]等。

然后,您可以简单地使用:

而不是处理3个案例的switch,而不是if (answer[Right] == Translate[choice-1]){ data.remove(Translate[choice-1]); JOptionPane.showMessageDialog(null, "Right"); } else { JOptionPane.showMessageDialog(null, "Wrong"); }
Translate

当您剩下少于3个选项时,您还应该注意代码中的无限循环:如果只有2个可能的值,则不能为{{1}}变量选择3个不同的值。 / p>