我正在用一个数组填充一个 JList,但我的主要问题是应该包含字符的变量总是空的;readChar() 没有得到任何东西,至少这是我的假设。
我正在从直接文件中读取数据库,内容并不重要,除了从每个寄存器读取的前两个数据:1 个 int 和 25 个字符。
如果某些内容被错误地读出,我会通过查看满是难以辨认的字符的显示器来注意到...
public static void WritingInJList (JList x) throws IOException
{
try{
RandomAccessFile file = new RandomAccessFile("database.dat","rw");
long registerSize = 78;
long numberRegisters = file.length()/registerSize;
int num=0;
String description="";
String productlist[] = new String[(int) numberRegisters];
for (int i=0;i<numberRegisters;i++)
{
file.seek(registerSize*i);
num = file.readInt(); /* int is read correctly */
for (int j=0; j<25; j++)
{description =""+file.readChar();}
productList[i] = num+"..."+description; /*variable description is blank!*/
System.out.println(productList[i]);
}
x.setListData(productList);
}catch (FileNotFoundException e){System.out.println("File Not Found");}
}
运行:
1...
2...
3...
4...
5...
6...
7...
8...
9...
10...
11...
12...
13...
当我使用 System.out.print(); 追踪问题时,如果从循环内部打印,则会显示所有字符。这是代码和输出:
public static void WritingInJList (JList x) throws IOException
{
try{
RandomAccessFile file = new RandomAccessFile("database.dat","rw");
long registerSize = 78;
long numberRegisters = file.length()/registerSize;
int num=0;
String description="";
String productlist[] = new String[(int) numberRegisters];
for (int i=0;i<numberRegisters;i++)
{
file.seek(registerSize*i);
num = file.readInt();
System.out.print(num+"...");
for (int j=0; j<25; j++)
{System.out.print(""+file.readChar());} /*All chars are read perfectly*/
System.out.println("");
productList[i] = description;
}
x.setListData(productList);
}catch (FileNotFoundException e){System.out.println("File Not Found");}
}
跑:
1... product1
2 ...product2
3...product3
4...
product4 5...product5
6...product6
7...product7
8...
product8 9...product9
10... product10
11...产品11
12...产品12
13... 产品13
我究竟做错了什么?为什么变量描述不显示任何内容