سؤال

وأنا مرتبك. أنا أحاول أن حلقة الرغم من 2 الملفات التي تبحث في الرمز المميز الأول في كل سطر من الملف الأول ومقارنتها إلى الرمز المميز الثالث من كل سطر من الملف الثاني. هنا هو هيكل منطقي في شكل حلقة في حين متداخلة:

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);
        }
    }
}

ولكن، كل ما أراه في الإخراج هو رمز الأول من السطر الأول من الملف الأول ورمز الثالث من كل سطر من الملف الثاني تتكرر 6000 (طول ملف 2) مرات بغض النظر عما إذا كانوا " على قدم المساواة "أم لا. هل يجب أن نفعل هذا مع ترميزات المختلفة؟ أستطيع أن أرى أن وجود تأثير على اختبار متساوين، ولكن لماذا ليس حلقة يتصرف بشكل صحيح؟

وابتهاج، براندون

هل كانت مفيدة؟

المحلول

وانها؛ وراء إذا

if(temp2.equals(temp1));

ولكن ذلك لن ربما تعمل على أي حال كما هو متوقع، حيث يجب إعادة فتح ملف 2 ضمن حلقة الخارجي، وإلا فإنه سوف يعمل فقط بشكل صحيح من أجل السطر الأول من الملف 1

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top