为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁华开满天机 2021-04-09 18:15:19
这是提示:-从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;}
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

问题是,您永远不会close()选择PrintWriter或FileOutputStream。


在方法结束时,请执行以下操作:


try {

    prtWriter.close();

catch (IOException e) {

    // Do some error reporting.

    e.printStackTrace();

}

更好的方法是使用Java的try-with资源语句:


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

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


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

        PrintWriter prtWriter = new PrintWriter(outFile, true);


        while (iter.hasNext()) {

            CreditCardNumber obj = iter.next();

            prtWriter.println(obj);

        }

    } catch (IOException e) {

        System.err.println(e);

        return;

    }

}


查看完整回答
反对 回复 2021-04-18
  • 1 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信