我正在制作一个添加/删除注册牌号的程序,但是当我删除特定的牌号时我遇到了麻烦。这是我的代码的一些部分。
ArrayList<String> PlateNumber = new ArrayList<String>(10);
System.out.println("Enter your Plate Number : ");
Scanner pn = new Scanner(System.in);
String PlateNumberxx = pn.nextLine();
System.out.println("Log in / Log out: ");
Scanner YoN = new Scanner(System.in);
String des = YoN.nextLine();
if(des.equals("log in")) {
PlateNumber.add(PlateNumberxx);
}
if(des.equals("log out")){
PlateNumber.remove(PlateNumberxx);
System.out.println("Time log out : " + PlateNumberxx + " " + d);
}
它不会删除我在扫描仪中输入的内容。我的代码有什么问题?
答案 0 :(得分:0)
当您尝试删除元素时,如何初始化列表,我不确定。我猜这可能是你的问题所在。
但是,为了删除元素,您的代码正在运行。
这是添加到此列表中的元素。我会在删除之前和之后打印出列表中的内容。
public static void main(final String[] args) {
final List<String> plateNumber = new ArrayList<String>(10);
plateNumber.add("123");
System.out.println("Plate Numbers to begin with: " + plateNumber.toString());
System.out.println("Enter your Plate Number : ");
final Scanner pn = new Scanner(System.in);
final String plateNumberxx = pn.nextLine();
System.out.println("Log in / Log out: ");
final Scanner YoN = new Scanner(System.in);
final String des = YoN.nextLine();
if(des.equals("log in")) {
plateNumber.add(plateNumberxx);
}
if(des.equals("log out")){
plateNumber.remove(plateNumberxx);
System.out.println("Time log out : " + plateNumberxx + " ");
System.out.println("Plate Numbers after removal: " + plateNumber.toString());
}
}
我得到的输出是:
板块编号开头:[123]
输入您的铭牌号码:
123
登录/退出:
退出
时间退出:123
去除后的板数:[]
答案 1 :(得分:-2)
如果要从arraylist中删除值,请不要使用方法ArrayList.remove(值),但要找出它所在的索引,并删除该索引,或者在某些情况下删除所有索引值在
ArrayList<String> list = new ArrayList<String>();
// Random Content
list.add("Apple");
list.add("Banana");
list.add("Plum");
list.add("Orange");
list.add("Apple");
list.add("Pineapple");
list.add("Peach");
list.add("Plum");
// Remove a value
{
String remove = "Apple";
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(remove)){
list.remove(i);
/*
* When we remove a value we have to iterate 1 index backwards,
* because the next value in the list is now shifted one index,
* so the list[i+1] becomes the new list[i], and in case it is the
* same value we have to check the new list[i] in addition, otherwise
* if we had two "Apple"s in a row, only the first 1 would get removed.
*/
i--;
}
}
}