Java 如何遍历ArrayList,然后使用迭代器';下一个方法是什么?
提示如下: -从ArrayList获取迭代器并分配给本地 变数 -使用迭代器遍历ArrayList并写入每个数组的toString 迭代器的下一个方法返回到输出文件的CreditCardNumber。 (这次您不需要写任何标签。) 这就是我目前所拥有的。我在写入文件时遇到问题:Java 如何遍历ArrayList,然后使用迭代器';下一个方法是什么?,java,Java,提示如下: -从ArrayList获取迭代器并分配给本地 变数 -使用迭代器遍历ArrayList并写入每个数组的toString 迭代器的下一个方法返回到输出文件的CreditCardNumber。 (这次您不需要写任何标签。) 这就是我目前所拥有的。我在写入文件时遇到问题: public static void writeArr(ArrayList<CreditCardNumber> temp) { FileOutputStream outFile = null;
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);
}
}
publicstaticvoidwriter(arraylisttemp){
FileOutputStream输出文件=null;
试一试{
outFile=newfileoutputstream(“/Users/raska/Desktop/prog6.txt”);
}catch(filenotfounde异常){
系统错误println(e);
回来
}//端盖
迭代器iter=temp.Iterator();
PrintWriter prtWriter=新的PrintWriter(输出文件,真);
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;
}
publicstaticarraylistuserinputarrlist(){
System.out.println(“输入数组中的元素数:”);
int arrLength=scanner.nextInt();
如果(arrLength<1){
arrLength=1;
}
ArrayList aList=新的ArrayList(arrLength);
对于(int i=0;i
您可以使用以下示例使用迭代器对数组进行迭代。网上还有很多其他的
while (iter.hasNext()) {
CreditCardNumber obj = iter.next();
System.out.println(obj.toString()); -> line causing problem...you need to write to printWriter...using system.out simple outputs to the console
}
正确代码:
while (iter.hasNext()) {
CreditCardNumber obj = iter.next();
prtWriter.write(obj.toString()); //hopefully you have overridden toString() in you CreditCardNumber class
}
问题是,您从未
close()
过PrintWriter
或FileOutputStream
在方法结束时,执行以下操作:
try {
prtWriter.close();
catch (IOException e) {
// Do some error reporting.
e.printStackTrace();
}
更好的方法是使用Java的try with resource语句:
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;
}
}
publicstaticvoidwriter(arraylisttemp){
try(FileOutputStream outFile=newfileoutputstream(“/Users/raska/Desktop/prog6.txt”)){
迭代器iter=temp.Iterator();
PrintWriter prtWriter=新的PrintWriter(输出文件,真);
while(iter.hasNext()){
CreditCardNumber obj=iter.next();
prtWriter.println(obj);
}
}捕获(IOE异常){
系统错误println(e);
回来
}
}
您遇到了什么问题?遍历部分和基本上写入文件。我不知道实现应该是什么样子。你理解循环吗?如果没有,请学习关于循环的Java教程。您可以使用一个简单的while
循环来实现need@user7我对我的帖子进行了编辑。这似乎是正确的实施方式。有些人无法提供解决方案。只有无缘无故地投反对票