gpt4 book ai didi

java - 抛出意外的令人困惑的错误

转载 作者:行者123 更新时间:2023-12-02 05:28:17 25 4
gpt4 key购买 nike

我正在编写一个相当简单的Java程序,提示用户输入2个字符串,然后第一个字符串根据第二个字符串进行格式化并相应地输出。

此处理通过删除第一个字符串中与第二个字符串中的每个字符相对应的每个字符并输出预期更改后的第一个字符串来进行。这可能看起来令人困惑且难以理解。

例如:
假设我们有以下 2 个字符串作为输入:

lennon
Ln

输出:

eo

从第一个字符串中删除所有出现的字符“L”和“n”后(不考虑大小写)

这是相关的程序:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.format("Enter 2 Strings, schmuck:%n");
String s1 = br.readLine();
String s2 = br.readLine();
List<Character> l = new ArrayList<>();
for(int i = 0; i < s1.length(); i++)
{
l.add(s1.charAt(i));
}
char ch;
for(int i = 0; i < s2.length(); i++)
{
ch=s2.charAt(i);

while((l.indexOf(ch)) != -1)
{
if(Character.isUpperCase(ch))
l.remove(ch);
l.remove(Character.toLowerCase(ch));
}
}
for(Character c : l)
{
System.out.printf("%c", c);
}

它抛出一个IndexOutOfBoundsException。我觉得这很怪异和令人困惑,感觉我已经陷入了僵局。也许这是一个愚蠢的错误。任何形式的帮助将不胜感激。

最佳答案

尝试

       l.remove(Character.valueOf(ch));
l.remove(Character.valueOf(Character.toLowerCase(ch)));

我的猜测是,您的代码中使用了 List.remove(int),其中 int 是列表中的索引。

堆栈跟踪将给出发生异常的正确行号。一定要检查那个。

关于java - 抛出意外的令人困惑的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com