2015-02-09 111 views
0

我有一个文本文件,我应该从中读取数据。然后,这些数据应被用来设置级别的传递:从文本文件读取输入到数组列表

  • > 20 →很好
  • 12-20之间→ OK
  • 失败

.txt文件如下像这样

X;20 
Y;12 

问题是,当我从文件中读取数据并将其添加到ArrayList时,它只读取列。换句话说,结果是索引0包含X;Y,并且索引1包含20;12。我需要的是索引0包含[X 20]和索引1包含[Y 12]

我的代码是:

BufferedReader assignment = new BufferedReader(new FileReader(assignmentFile)); 
ArrayList<String> assignmentArrayList = new ArrayList<String>(); 
String item; 
while ((item = assignment.readLine()) != null) { 
    assignmentArrayList.add(item); 
    String[] itemSplit = item.split(";"); 
    String passWithDistinction = itemSplit[0]; 
    String pass = itemSplit[1]; 
    System.out.println(passWithDistinction + pass); 
} 
+3

请显示您的代码。 – Jens 2015-02-09 11:28:32

+0

为什么使用ArrayList而不是简单的'String'数组? – Aradmey 2015-02-09 11:41:14

+0

您的代码有效。我无法理解你在找什么。 – 2015-02-09 11:47:18

回答

1

您可以检索文件的内容到String阵列像这样:

File assignmentFile = new File("C:/Dir1/Dir2/file.txt"); 
ReadFile assignment = new ReadFile(assignmentFile.getAbsolutePath()); 
String[] lines = assignment.OpenFile(); 

如果你想设置的字符串,使他们不会有“ ;”符号,添加这些行:

for(int i=0; i<lines.length(); i++) 
    lines[i].replace(";", " "); 
0

如果我理解你的问题正确,那么你要阅读的文本文件,并与定义的区别,并通过标记两个数字结束。我不太确定X和Y的用途以及为什么要存储它们 - 如果您愿意,我很乐意提供帮助。

如果你知道文本文件有两个(也只有两个)行,那么你并不需要一个while循环。更简单的是只读取和解析反过来这行:

String[] distinctionLine = assignment.readLine().split(";"); 
int distinction = Integer.parseInt(distinctionLine[1]); 
String[] passLine = assignment.readLine().split(";"); 
int pass = Integer.parseInt(passLine[1]); 

有一些例外情况和错误情况,你应该检查,但希望你的想法的。