需要Arraylist帮助

时间:2017-06-17 17:50:59

标签: java jgrasp

import java.util.*;
public class Election {
public static void main(String[] args) {

    //ArrayList<String> Declaration
    ArrayList<String> al= new ArrayList<String>();
    //add method for String ArrayList
    al.add("Mike Doherty");
    al.add("Joan Murphy");
    al.add("Marie Smith");
    al.add("George Jones");

      System.out.println("ArrayList before remove:");
       for(String var: al){
        System.out.println(var);
   }
   //Removing 1st element
   al.remove(1);

      System.out.println("ArrayList After remove:");
    for(String var2: al){
         System.out.println(var2);
       }
        //adding a new element
    al.add("Tom Carroll");

        System.out.println("ArrayList After new name:");
            for(String var3: al){
                System.out.println(var3);

  } 

}
}

上面的代码完成了它应该做的事情,但不是我想要的方式。

我想要它做的是打印前四个名字,即Mike Doherty给George Jones。 (我可以这样做)

然而,我想要做的是允许用户输入候选人,即Joan Murphy,并允许用户输入新的候选人,即汤姆卡罗尔。

然后最后我想打开结果,Joan Murphy被移除,Tom Carroll补充道。

我完成它的方式确实有效,但我不知道如何通过让用户删除名称并输入名称来实现。

任何帮助都会很棒。

谢谢,

马克

2 个答案:

答案 0 :(得分:1)

您正在寻找的是“按值删除”,而不是索引。

al.remove("Mike Doherty");

将“Mike Doherty”替换为用作用户输入的字符串。

答案 1 :(得分:0)

您可以使用阅读器获取用户输入,例如:

`System.out.println("Please enter the candidate name you wish to remove: ");    
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String toBeRemoved = br.readLine();
al.remove(toBeRemoved);`

然后你以同样的方式添加一个人:

`System.out.println("Please enter the candidate name you wish to add: ");    
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String toBeAdded = br.readLine();
al.add(toBeRemoved);`

由于列表中的项目是字符串,您可以通过将它们的值传递给列表的remove方法来删除它们。