我有一些带有一些值的文本文件。
textfile data
line1row1 line1row2 55
line2row1 line2row2 44
line3row1 line3row2 33
我有一个数据类,我已经创建了一个构造函数。进入数组的数据,我想从文本文件中读取。
import java.io.*;
import java.util.*;
class Data{
public Data(String entry1, String entry2, int entry3){}
}
public class readData {
public static void main(String[] args) throws Exception{
BufferedReader inFile = new BufferedReader (new FileReader ("scores.txt"));
Data entrydata[] = new Data[3]; //create new constructor array
for(int i = 0; i < entrydata.length; i++ ){
entrydata[i] = inFile.readLine();
}
}
}
我在“inFile.readLine()”上收到错误...无法从字符串转换为数据(“数据”指的是类)
我可以对数据进行硬编码[如下所示],但希望从文件中读取
Data entrydata[] = new Data[3];
entrydata [0] = new Data("line1row1 ", "line1row2 ", 55);
entrydata [1] = new Data("line2row1 ", "line2row2 ", 44);
entrydata [2] = new Data("line3row1 ", "line3row2 ", 33);
我想这样做的原因是我可以访问存储在数组中的信息。
答案 0 :(得分:2)
inFile.readline()返回一个字符串,它不是Data对象,因此您会收到错误消息。您需要将从文件中读取的字符串拆分为数组,然后使用数组元素创建数据项。类似的东西:
String[] tmp = inFile.readline().split( " " );
entrydata[i] = new Data( tmp[0], tmp[1], Integer.parseInt( tmp[2] ) );
答案 1 :(得分:1)
我会做这样的事情
class Data{
String entry1, entry2;
int entry3;
public Data(String[] datas) throws NumberFormatException {
entry1 = datas[0];
entry2 = datas[1];
entry3 = Integer.parseInt(datas[2]);
}
}
.
.
.
.
Data entrydata[] = new Data[3]; //this is not a constructor
for(int i = 0; i < entrydata.length; i++ ){
entrydata[i] = new Data(inFile.readLine().split(" ")); //this is the constructor
}
答案 2 :(得分:0)
从文件中读取一行文本的readLine
方法如何知道如何将该行转换为Data
实例?它没有记在你的脑海里。
所以你必须告诉它如何将线转换为三个组件。您可以使用String.split
方法在每个空格字符处拆分行,使用Integer.parseInt
方法将第三个标记转换为整数。
此外,您的代码假定该文件恰好包含3行。如果不是这种情况,则应循环直到下一行为空,并将每个Data实例放入List<Data>
而不是数组。该列表将自动增大,这是阵列无法做到的。
答案 3 :(得分:0)
您的readData
类没有构造函数或方法。第11-15行中的代码需要位于方法/构造函数中。
如果每个条目的长度都已修复,您可以尝试使用line.substring(...)
代替line.split(...)
。
班级名称应为ReadData
。
答案 4 :(得分:0)
此代码肯定会有效:
FileReader fr =new FileReader("src/FilePractice.txt");
BufferedReader in =new BufferedReader(fr);
String line;
while((line = in.readLine()) != null){
String[] arrray=line.split(",");
RelationShip r=RelationShip.valueOf(arrray[2]);
new Data(arrray[0],arrray[1],r,Integer.parseInt(arrray[3]));
System.out.println(arrray[0]+arrray[1]+arrray[2]+arrray[3]);