2

プログラムをテキストファイルから読み取らせようとすると、少し混乱します。テキストファイルは、クライアントID、クライアントタイトル、クライアントイニシャル、クライアントの名前、クライアントアドレス、クライアントの町または市、クライアントの郵便番号、ポリシーの発行年、およびポリシー番号で構成されます。残りのフィールドは、ポリシー番号が属するポリシーのタイプに対応しています。各フィールドを区切るために、区切り文字を使用するようにアドバイスされました。

テキストファイルは次のようになります。

IC-x00042W/Ms/LQ/Bethea/205, Willis Road/Bolton/BO5 1DQ/2007/C02000007/10000/0.5/2008/B27100037/150000/0.3/2011/V30200319/2000/21/1/0#

IC-x00033D/Mr/R/Bowie/119, Thatcher Way/Glasgow/GL9 5SX/2008/L09000016/50000/45/2/2009/C74100008/8000/0.6/2012/B05300001/125000/0.5#

IC-x00013A/MS/GRV/Blackwell/209, Drunk Road/Hawick/HK8 1MY/2013/B09000009/225000/0.1/2011/C14100014/20000/0.1/2010/V63200304/12000/43/5/1#         

これまでのところ、次のようなものがあります:(すべてのクライアントの個人情報を含むNameというクラスと、すべてのアドレスの詳細を含むaddressというクラスがあります):


    final String CLIENT_DELIMITER = "#";
    final String ITEM_DELIMITER = "/";

    Scanner fileScan = null;
    Scanner clientScan = null;

    /*
     * ********************************************************************
     * 
     * Opening the text file and reading from the text file. If the 
     * File cannot be read then an error is thrown
     * 
     * ********************************************************************
     */
    try {
        fileScan = new Scanner(inputFile);
    } catch (Exception e) {
        System.out.println(e);
    }

    //********************************************************************

    String nxtClient = null;


    //Define classes 
    ClientDetailsList clientInfo = null;
    Name clientNameDetails = null;
    Address clientFullAddress = null;
    PolicyList clientPolicies = null;
    ClientDetailsList clientDetails = null;

    ClientDetailsList clientCollection = new ClientDetailsList();

    fileScan.useDelimiter(ITEM_DELIMITER);

    /*
     * ******************************************************************
     * Scan for client details from the text file
     * ******************************************************************
     */

    while (fileScan.hasNext()) {

        // Input the data for the next Client
        nxtClient = fileScan.next().trim();
        clientScan = new Scanner(nxtClient);
        clientScan.useDelimiter(ITEM_DELIMITER);


        //Client Variables
        String clientID = null;
        clientScan.useDelimiter(ITEM_DELIMITER);
        String clientTitle = null;
        String clientInitials = null;
        String clientSurname = null;


        //Reads in details from name
        clientID = fileScan.next().trim();
        clientTitle = fileScan.next().trim();
        clientInitials = fileScan.next().trim();
        clientSurname = fileScan.next().trim();

        //Construct Name
        clientNameDetails = new Name(clientTitle, clientInitials, clientSurname);

        String clientAddress = null;
        String clientTownOrCity = null;
        String clientPostCode = null;
        String policyDetails = null;

        //Reads in details from address
        clientAddress = fileScan.next().trim();
        clientTownOrCity = fileScan.next().trim();
        clientPostCode = fileScan.next().trim();

        //Construct Address
        clientFullAddress = new Address(clientAddress, clientTownOrCity, clientPostCode);
4

1 に答える 1

0
nxtClient = fileScan.next();
final String[] srcData = nxtClient.split("/");

if (srcData.length != 8){// 8? am i right?
    System.err.println("wrong data line " + nxtClient);
}

for (int i = 0; i < srcData.length; i++){
srcData[i] = srcData[i].trim();
}

 clientNameDetails = new Name(srcData[0], srcData[1], srcData[2]);
.....

これはあなたの解決策よりも単純に見えます

于 2013-03-10T17:02:02.480 に答える