猿问

如何遍历ArrayList,然后使用Iterator的next方法写入文件?

这是提示:


-从ArrayList中获取一个Iterator并将其分配给局部变量。


-使用Iterator遍历ArrayList,并将Iterator的next方法返回的每个CreditCardNumber的toString写入输出文件。(您这次不需要写任何标签。)


这就是我到目前为止所拥有的。我在写入文件时遇到了麻烦:


    public static void writeArr(ArrayList<CreditCardNumber> temp) {

    FileOutputStream outFile = null;

    try {

        outFile = new FileOutputStream("/Users/raska/Desktop/prog6.txt");

    } catch (FileNotFoundException e) {

        System.err.println(e);

        return;

    } // end catch

    Iterator<CreditCardNumber> iter = temp.iterator();

    PrintWriter prtWriter = new PrintWriter(outFile, true);


    while (iter.hasNext()) {

        CreditCardNumber obj = iter.next();

        prtWriter.println(obj);

    }

}

这是我对ArrayList的输入:


    public static ArrayList<CreditCardNumber> userInputArrList() {

    System.out.println("Enter the number of elements in the array: ");

    int arrLength = scanner.nextInt();

    if (arrLength < 1) {

        arrLength = 1;

    }

    ArrayList<CreditCardNumber> aList = new ArrayList<CreditCardNumber>(arrLength);

    for (int i = 0; i < arrLength;) {

        try {

            System.out.println("Enter an issuer ID# (6 digits) for element #" + i);

            String issuerId = scanner.next();

            System.out.println("Enter an account # (9 digits) for element #" + i);

            String accountNum = scanner.next();

            CreditCardNumber obj = new CreditCardNumber(issuerId, accountNum);

            obj.changeId(issuerId);

            aList.add(obj);

            i++;

        } catch (IllegalArgumentException e) {

            System.out.println(e.toString()); // don't throw just

                                                // print

        }

    }

    return aList;

}


繁华开满天机
浏览 172回答 1
1回答

小唯快跑啊

问题是,您永远不会close()选择PrintWriter或FileOutputStream。在方法结束时,请执行以下操作:try {&nbsp; &nbsp; prtWriter.close();catch (IOException e) {&nbsp; &nbsp; // Do some error reporting.&nbsp; &nbsp; e.printStackTrace();}更好的方法是使用Java的try-with资源语句:public static void writeArr(ArrayList<CreditCardNumber> temp) {&nbsp; &nbsp; try (FileOutputStream outFile = new FileOutputStream("/Users/raska/Desktop/prog6.txt")) {&nbsp; &nbsp; &nbsp; &nbsp; Iterator<CreditCardNumber> iter = temp.iterator();&nbsp; &nbsp; &nbsp; &nbsp; PrintWriter prtWriter = new PrintWriter(outFile, true);&nbsp; &nbsp; &nbsp; &nbsp; while (iter.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CreditCardNumber obj = iter.next();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; prtWriter.println(obj);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; } catch (IOException e) {&nbsp; &nbsp; &nbsp; &nbsp; System.err.println(e);&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答