저는 사용자에게 2 개의 문자열을 묻는 간단한 Java 프로그램을 작성합니다. 그 다음에 첫 번째 문자열이 두 번째 문자열에 따라 형식이 지정되고 이에 따라 출력됩니다.예기치 않은 난독화 오류가 발생했습니다
이 처리는 두 번째 문자열의 각 문자와 일치하는 첫 번째 문자열의 모든 문자를 삭제하고 의도 한 변경 후 첫 번째 문자열을 출력하여 진행됩니다. 이것은 당혹스럽고 이해하기 어려운 것으로 보일 수 있습니다. 예를 들어
:
우리가 입력으로 다음과 같은 두 문자열있어 가정하자 :
lennon
Ln
출력 : 문자 'L'&의 모든 발생을 제거한 후
eo
을 '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
입니다. 나는 그것이 기분이 상쾌하고 혼란스럽고 나는 침체에 이르렀다 고 느낀다. 어리석은 실수일지도 몰라. 어떤 종류의 도움이라도 ecstatically 히 인정 될 것입니다.
루프 –
당신의 프로그램이 상당히 그런데, 당신이에 무엇을 기대하지 않을 때/대한 중첩 교체하지 정규식에 대한 작업을 이잖아. 'lennon'과'LN' 문자열을 사용해보십시오. 그 이유를 알아보십시오. – rix0rrr
Gee ... while 루프에 들어가기 전에 해당 사건을 합치는 일에 빠져 버렸습니다. 따, 친구! –