【发布时间】:2014-09-11 15:26:01
【问题描述】:
我正在编写一个相当简单的 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。我觉得它诡异而令人困惑,我觉得我已经陷入了僵局。也许这是一个愚蠢的错误。任何形式的帮助都会欣喜若狂。
【问题讨论】:
-
这是正则表达式替换的工作,而不是嵌套 for / while 循环
-
顺便说一句,您的程序不会完全按照您的预期进行。尝试以下字符串:
lennon和LN,然后找出原因。 -
哎呀...有点错过了在进入 while 循环之前使相关案例一致,嗯。塔,伙计!
标签: java string list exception