문제

혼란스러워요.첫 번째 파일의 모든 줄에 있는 첫 번째 토큰을 보고 두 번째 파일의 모든 줄에 있는 세 번째 토큰과 비교하여 2개의 파일을 반복하려고 합니다.다음은 중첩된 while 루프 형태의 논리적 구조입니다.

BufferedReader reader1 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile1)));

BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile2),"EUC-JP"));

String line1, line2 = null;
String temp1, temp2 = null;

while ((line1=reader1.readLine()) != null)
{
    StringTokenizer st1 = new StringTokenizer(line1);
    temp1 = "U"+st1.nextToken();
    while((line2=reader2.readLine()) != null)
    {
        StringTokenizer st2 = new StringTokenizer(line2);
        temp2 = st2.nextToken();
        temp2 = st2.nextToken();
        temp2 = st2.nextToken();
        if(temp2.equals(temp1));
        {
            System.out.println(temp1+" "+temp2);
        }
    }
}

그러나 출력에서 ​​볼 수 있는 것은 첫 번째 파일의 첫 번째 줄에 있는 첫 번째 토큰과 두 번째 파일의 모든 줄에 있는 세 번째 토큰이 "동일"인지 여부에 관계없이 6,000(파일 길이 2)번 반복된 것뿐입니다. 아니다.이것이 다른 인코딩과 관련이 있습니까?같음 테스트에 영향을 미치는 것을 볼 수 있지만 루프가 제대로 작동하지 않는 이유는 무엇입니까?

건배, 브랜든

도움이 되었습니까?

해결책

그건 ;if 뒤에

if(temp2.equals(temp1));

그러나 외부 루프 내에서 파일 2를 다시 열어야 하기 때문에 어쨌든 예상대로 작동하지 않을 것입니다. 그렇지 않으면 파일 1의 첫 번째 줄에 대해서만 올바르게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top