Java写入文件方法不会从arraylist中写入任何内容

标签 java loops arraylist printwriter

这就是问题所在:文件被创建,第一行文本被写入,但是 for>if>while 的逻辑循环中的文本没有写入:PassengerSeats.println(nRowNum +cSeatLetter +""+s乘客姓名);

这里是有问题的主要方法代码:

else if (nMainChoice == 4) {
    System.out.print("Please enter a flight number: ");
    nMainFlight = input.nextInt();
    input.nextLine();
    System.out.println("Please enter a date of departure: ");
    System.out.print("Month: (i.e For January, enter 1): ");
    sMonth = input.nextLine();
    System.out.print("Day: (i.e for the 15h, enter 15): ");
    sDay = input.nextLine();
    System.out.print("Year: (i.e for 2015, enter 15): ");
    sYear = input.nextLine();
    sDate = sMonth +"/" +sDay +"/" +sYear;
    System.out.println(sDate);

    PrintManifest newManifest = new PrintManifest(TicketsList,
                    FlyersList, nMainFlight, sDate, sMonth, sDay, sYear);

这是它引用的 PrintManifest 代码:

public PrintManifest(ArrayList<Tickets> TicketsListing, ArrayList<Flyers> FlyersListing, 
        int nFlightID, String sFlightDate, String sFMonth, String sFDay, 
        String sFYear) throws Exception{

    String sFlightManifest = "DataFiles/Manifest-nFlightID-sFMonth-sFDay-sFYear.txt";
    File FlightManifest = new File(sFlightManifest);
    PrintWriter PassengerSeats = new PrintWriter(FlightManifest);

    PassengerSeats.println("Flight manifest for #" +nFlightID +" on " +sFlightDate);

    for (nCount = 0; nCount < TicketsListing.size(); nCount++) {
        if (nFlightID == TicketsListing.get(nCount).getFlightNumber() 
            && sFlightDate == TicketsListing.get(nCount).getDate()) {

        nRowNum = TicketsListing.get(nCount).getRow();
        cSeatLetter = TicketsListing.get(nCount).getSeat();

        while (TicketsListing.get(nCount).getFlyerID() != FlyersListing.get(nCountFly).getID()) {
            nCountFly++;
        } //End while loop

        sPassengerName = FlyersListing.get(nCountFly).getFirst() +" " 
                +FlyersListing.get(nCountFly).getLast();

        PassengerSeats.println(nRowNum +cSeatLetter +" " +sPassengerName);
        } //End if 
    } //End for loop

    PassengerSeats.close();

以及它从 TicketsList 中提取的数据样本,它已经被解析并存储在数组列表中:

19836;1258;1359;1/2/15;A;5;A
19837;1215;1359;1/2/15;A;6;C
19838;1245;438;1/11/15;M;15;F
19839;1129;1014;1/5/15;M;17;F
19840;1139;703;1/11/15;M;14;C
19841;1353;689;1/11/15;F;3;D
19842;1296;1014;1/2/15;F;4;F

最佳答案

boolean 表达式

sFlightDate == TicketsListing.get(nCount).getDate()

将始终评估为 false,这意味着您的 if 语句中的任何内容都不会执行。应该使用 equals 方法来评估字符串相等性,就像这样

sFlightDate.equals(TicketsListing.get(nCount).getDate())

因为它比较字符串的内容。 == 运算符比较对象指针,在这种情况下它总是不同的。

关于Java写入文件方法不会从arraylist中写入任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707997/

相关文章:

java - 以 o(n) 或 o(1) 的时间复杂度对整数数组进行排序

java - 在 Glassfish 中创建可移植 JDBC 连接池

java - 使用 mvn liquibase :diff? 时如何禁用删除表和列

arrays - 如果匹配多个相同的数据,如何循环?

algorithm - 使用 goto 与运行时代码评估

java - 在 Java 中解码来自 Socket 连接的数据流

java - 我必须循环接受用户输入,直到输入 "done"

java - 在数组列表中搜索最大的数字

java - 对文件列表进行排序

android - 如何从 android 中的 ArrayList<Integer> 中删除特定数据