根据用户输入中出现的字符从包含字母的数组列表中删除字符

问题描述 投票:0回答:2

我正在做一个项目,我需要从

ArrayList
中系统地删除字母,因为它们出现在用户输入的单词中。然后显示所有剩余的字符,然后继续消除过程,直到只剩下元音.

我似乎无法在程序不崩溃的情况下消除字符。

这是有问题的代码:

public static void Mapper(){
    Scanner make = new Scanner(System.in);

    char Aphabets[] ={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    ArrayList<Character> Alpabets = new ArrayList<>();
    String word = make.nextLine();
    for (int i = 0; i < Aphabets.length; i++) {
        Alpabets. add(i,Aphabets[i]);
    }
    for (int i = 0; i < word.length(); i++) {
        Alpabets.remove(word.charAt(i));
    }
    System.out.println(Alpabets);
}
java arraylist
2个回答
0
投票

改变

Alpabets.remove(word.charAt(i));

Alpabets.remove((Object) word.charAt(i));

问题是

List.remove
有两个实现(它是一个重载方法):

通过使用

Alpabets.remove(word.charAt(i));
调用,您会意外地调用需要索引的那个,如果您给它一个“足够大”的字符(字符在 Java 中可以被视为数值),您将在以下位置找到索引:删除方法中的界限。

通过将参数强制转换为

Object
,可以强制调用正确的方法。


0
投票

也许您还可以使用映射键和值并根据用户输入删除。

© www.soinside.com 2019 - 2024. All rights reserved.