gpt4 book ai didi

Java - 带有数组列表的二进制文件 I/O

转载 作者:行者123 更新时间:2023-12-02 07:50:16 25 4
gpt4 key购买 nike

我是java初学者,在使用数组列表的二进制文件输入和输出时遇到问题。我试图将数组列表上的数据存储在文件中,然后使用它在控制台中显示它。这是我的一些代码,它运行但显示错误的信息,并且我还收到警告。对于导致此问题的原因有任何帮助吗?谢谢!

public class Towers {
public static ArrayList<String> allMoves= new ArrayList<String>();
static{
allMoves.add( "These Are the Disk Moves:" );
}

public static void move(final int aNumDisks){
move(aNumDisks, 1, 2, 3);
String fileName = "solution.dat";
try{
ObjectOutputStream outputStream =
new ObjectOutputStream(
new FileOutputStream (fileName));
outputStream.writeObject(allMoves);
outputStream.close( );
}
catch ( IOException e ){
System.out.println("Error writing to file " + fileName);
System.exit(0);
}
}

在控制台中显示输出文件。

public class TReporter {        
public static void reportSol(){
String fileName = "solution.dat";
ArrayList<String> allMovesA = null;
try{
ObjectInputStream inputStream =
new ObjectInputStream(
new FileInputStream (fileName));
allMovesA = (ArrayList<String>)inputStream.readObject(); //WARNING!
//Type safety: Unchecked cast from Object to ArrayList<String>
inputStream.close();
}
catch (Exception e){
System.out.println("Problem reading the file " + fileName);
System.exit(0);
}
for (int i = 0; i < allMovesA.size(); ++i){
System.out.println( allMovesA.get(i) );
}

它应该显示如下内容:

=== 0 disks move(int) ===
These Are the Disk Moves:

=== 0 disks move(,,) ===
These Are the Disk Moves:

=== 1 disk move(int) ===
These Are the Disk Moves:
Move disk from 1 to 3

=== 2 disks ===
These Are the Disk Moves:
Move disk from 1 to 2
Move disk from 1 to 3
Move disk from 2 to 3

=== 2 disks move(2,3,2,1) ===
These Are the Disk Moves:
Move disk from 3 to 2
Move disk from 3 to 1
Move disk from 2 to 1

=== 3 disks move(3) ===
These Are the Disk Moves:
Move disk from 1 to 3
Move disk from 1 to 2
Move disk from 3 to 2
Move disk from 1 to 3
Move disk from 2 to 1
Move disk from 2 to 3
Move disk from 1 to 3

但是我得到了这个:

=== 0 disks move(int) ===
These Are the Disk Moves:
Move disk from 1 to 3
Move disk from 1 to 2
Move disk from 3 to 2
Move disk from 1 to 3
Move disk from 2 to 1
Move disk from 2 to 3
Move disk from 1 to 3

=== 0 disks move(,,) ===
These Are the Disk Moves:
Move disk from 1 to 3
Move disk from 1 to 2
Move disk from 3 to 2
Move disk from 1 to 3
Move disk from 2 to 1
Move disk from 2 to 3
Move disk from 1 to 3

=== 1 disk move(int) ===
These Are the Disk Moves:
Move disk from 1 to 3

=== 2 disks ===
These Are the Disk Moves:
Move disk from 1 to 2
Move disk from 1 to 3
Move disk from 2 to 3

=== 2 disks move(2,3,2,1) ===
These Are the Disk Moves:
Move disk from 1 to 2
Move disk from 1 to 3
Move disk from 2 to 3

=== 3 disks move(3) ===
These Are the Disk Moves:
Move disk from 1 to 3
Move disk from 1 to 2
Move disk from 3 to 2
Move disk from 1 to 3
Move disk from 2 to 1
Move disk from 2 to 3
Move disk from 1 to 3

最佳答案

您收到的警告是完全正常的。您可以通过在带有警告的行之前插入此行来抑制它:

@SuppressWarnings("unchecked")

对于您得到的错误信息:

  • 请确保在尝试读取文件之前写入该文件,您可能正在使用该文件的旧版本。
  • 确保 ArrayList 确实包含正确的移动。

关于Java - 带有数组列表的二进制文件 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com