程序将* .csv文件读入数组并打印内容。需要打印索引号

时间:2019-04-02 14:38:17

标签: java csv arraylist indexing printing

我正在尝试将索引号包含到我的println字符串中。我尝试创建一个迭代循环,但是它无法正确打印索引号。

package main;
import test.address;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Lab9_main {

    // Delimiters used in the CSV file
    private static final String COMMA_DELIMITER = ",";

    public static void main(String[] args) {

        BufferedReader br = null;

        try {

            // Reading the csv file
            br = new BufferedReader(new FileReader("addresses.csv"));

            // Create List for holding address objects
            ArrayList<address> addressList = new ArrayList<>();

            String line;

            // Read to skip the header
            br.readLine();

            // Reading from the second line
            while ((line = br.readLine()) != null) {
                String[] addressDetails = line.split(COMMA_DELIMITER);

                //Save the address details in address object
                if(addressDetails.length > 0 ) {
                    address addy = new address(addressDetails[0], addressDetails[1], addressDetails[2],
                            addressDetails[3], addressDetails[4], Integer.parseInt(addressDetails[5]));
                    addressList.add(addy);
                }
            }

            // Lets print the address List
            for(address e : addressList) {
                    System.out.println("The address details in the index....." + e + "....:" + e.getFirstName()
                            + "..." + e.getLastName() + "..." + e.getAdd() + "...." + e.getCit() + ".. " + e.getSt()
                            + "..." + e.getZip());

            }

        } catch(Exception ee) {
            ee.printStackTrace();
        }

        finally {
            try {
                br.close();
            } catch(IOException ie) {
                System.out.println("Error occurred while closing the BufferedReader");
                ie.printStackTrace();
            }
        }
    }
}

当前打印输出如下:

The address details in the index.....test.address@61bbe9ba....:John...Doe...120 jefferson st.....Riverside..  NJ...80751
The address details in the index.....test.address@610455d6....:Jack...McGinnis...220 hobo Av.....Phila..  PA...9119

我希望显示索引号而不是地址位置,例如:

The address details in the index.....0....:John...Doe...120 jefferson st.....Riverside..  NJ...80751
The address details in the index.....1....:Jack...McGinnis...220 hobo Av.....Phila..  PA...9119

2 个答案:

答案 0 :(得分:1)

您使用的For-Each Loop将遍历集合,而不会暴露您手中元素的索引。

尝试以下方法:

//Lets print the Employee List
for(int i = 0; i < addressList.size(); i++) {
        address e = addressList.get(i);
        System.out.println("The address details in the index....." + i + "....:" + e.getFirstName()
            + "..." + e.getLastName() + "..." + e.getAdd() + "...." + e.getCit() + ".. " + e.getSt()
            + "..." + e.getZip());

}

答案 1 :(得分:0)

如果您希望坚持自己的循环-

 // Lets print the address List

     // initialize your index number 

         int i=0;

            for(address e : addressList) {
                    System.out.println("The address details in the index....." + i + " "  + e + "....:" + e.getFirstName()
                            + "..." + e.getLastName() + "..." + e.getAdd() + "...." + e.getCit() + ".. " + e.getSt()
                            + "..." + e.getZip());

     // increment your index and let it roll

              i++;

            }