簡體   English   中英

如何使用掃描儀讀取多行文件並將其存儲到不同的對象中

[英]How do I read multiple file lines and store them into different Objects Using Scanner

我有一個文件,我試圖從中讀取多行。 但是根據是房地產經紀人行還是物業行,它將某些東西存儲到行值數組中。 我找不到正確的循環來正確讀取行這是我的代碼以讀取行

    while (fileScanner.hasNextLine()) {
        String oneLine;
        String[] lineValues = null;
        oneLine = fileScanner.nextLine();

        lineValues = oneLine.split(",");

        if (lineValues[0].contains("REALTOR")) {
            if (lineValues[1].contains("ADD")) {                    
                processRealtorAddition(lineValues);                    
            } else if (lineValues[1].contains("DEL")) {
                realtorDeletion(lineValues);
            }
            else
                break;

        }  if (lineValues[0].contains("PROPERTY")) {
            System.out.println("fsdfsdfsdfdsfdsfsdfsdfds");                
            if (lineValues[1].contains("ADD")) {                    
                processPropertyAddition(lineValues);
                break;
            } else if (lineValues[1].contains("DEL")) {
                propertyDeletion(lineValues);
            }
        }             
    }
}

但是當我運行時,我得到了:

fsdfsdfsdfdsfdsfsdfsdfds房地產經紀人日志中添加了許可證編號為MN4564567的房地產經紀人對象:

物業日志:物業{mlsNumber = 4455667,licenseNumber = MN4564567,streetAdress = 4455這個圈子,城市=丹佛,州= CO,郵政編碼= 80333,卧室= 1,浴室= 1.0,出售= false,詢問價格= 344555.0}所有屬性均為正確的BUILD SUCCESSFUL(總時間:0秒)

這是我要讀取的文件:

REALTOR,ADD,MN4564567,Carla,Combs,444-555-6666,0.014屬性,ADD,4455667,MN4564567,4455這個圈子,丹佛,CO,80333,1,1,N,344555 REALTOR,ADD,RR6655443,Jerry, Smith,555-444-3333,0.013 PROPERTY,ADD,23456789,RR6655443,888 Terry Lane,Longmont,CO,80503,3,2,N,222222 REALTOR,ADD,AB1234567,Matthew,Munez,123-456-7890, 0.012屬性,ADD,1234567,AB1234567,1234哪條路,某處,CO,82222,3,3,Y,222222屬性,ADD,2234567,AB1234567,345 Main St,柯林斯堡,CO,81333,4,3.5,N ,222333 REALTOR,DEL,MN4564567 REALTOR,ADD,XY98765432,Alex,Yung,999-888-7777,0.013 PROPERTY,ADD,9998888,XY98765432,111 Main St,Cheyenne,WY,82222,1,1

,N,199888

我只需要讀取第一行即可獲得所有正確的信息,然后重新開始while循環,然后讀取第二行。 謝謝!

這是處理加法的靜態方法

static void processPropertyAddition(String lineValues[]) {
    Property property = new Property(lineValues);

    boolean value1 = property.verifyMlsNumber();
    boolean value2 = property.verifyState();
    boolean value3 = property.verifyZipCode();

    if (value1 == false) {
        System.out.println("ERROR: invalid MLS number: "
                + property.mlsNumber + "\n");
    } else if (value2 == false) {
        System.out.println("ERROR: Invalid State: "
                + property.state + "\n");
    } else if (value3 == false) {
        System.out.println("ERROR: Invalid zip code: "
                + property.zipCode + "\n");
    }

    boolean value4 = realtorLogImpl.isLicenseUnique(property.getLicenseNumber());

    boolean value5 = propertyLogImpl.isMlsUnique(property.getMlsNumber());
    if (value4 == false && value5 == false) {
        propertyList.add(property);
    } else if (value5 == true && value4 == true) {
        propertyList.add(property);
    } else if (value4 == false && value5 == true) {
        propertyList.add(property);

        System.out.println("The Property with Realtor license number "
                + property.getLicenseNumber() + " and with MLS number"
                + property.getMlsNumber() + " has been added");
    } else if (value4 == true && value5 == false) {
        System.err.println(" Property will not be added due to "
                + "a Realtor license or a MLS number that is not "
                + "unique");
    }
}

這是PropertyLogImpl將屬性添加到屬性鏈接列表的方法

  public boolean add(Property property) {
    return propertyList.add(property);
}

我必須有一個添加屬性的方法,我認為此方法可能是錯誤的,並且可能是其原因

代替這個

 }  if (lineValues[0].contains("PROPERTY")) {

你可能想寫

 } else if (lineValues[0].contains("PROPERTY")) {

另外,無論何時使用contains您都可能想使用equals

並且正如注釋中已經提到的那樣,您對break語句的使用是可疑的。

如果遇到無限循環,到目前為止顯示的代碼中沒有任何東西會引起這種情況。 無限循環可能來自這里:

realtorLogImpl.isLicenseUnique(property.getLicenseNumber());

使用調試器查找原因應該非常容易(提示,提示等)

break語句退出for/while循環。

如果在processPropertyAddition方法調用之后刪除了break語句,那應該可以修復您的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM