我有一个方法,它读取文件并在String
数组列表中返回文本文件的内容。找到该方法的实现以及我如何阅读它。现在我想要在文件中包含行数。我可以在评论中看到如下所示 - 你能告诉我如何从方法中传递整数变量并读取整数?
下面 - 即读取文件应返回由字符串数组和int组成的List
。
public List<String[]> readFile() {
final List<String[]> userList = new ArrayList<String[]>();
BufferedReader bufferedreader = null;
try {
final String FileName="abs.txt"
bufferedreader = new BufferedReader(new FileReader(FileName));
String line = null;
while ((line = bufferedreader.readLine()) != null) {
// Add Variable ++ to get number of lines
final String[] values = line.split(",");
userList.add(values);
}
}
catch (FileNotFoundException ex) {
logError(ex.getMessage());
}
catch (IOException ex) {
logError(ex.getMessage());
}
finally {
try {
if (bufferedreader != null){
bufferedreader.close();
}
}
catch (IOException ex) {
logError(ex.getMessage());
}
}
return userList;
}
这就是我读它的方式:
List<String[]> usersArray1 = new ArrayList<String[]>();
usersArray1=complianceTracker.readFile();
答案 0 :(得分:3)
在这种情况下,文件中的行数与usersArray1
中的条目数相对应,您可以将其设为usersArray1.size()
。
答案 1 :(得分:1)
你可以创建一个封装对象来保存列表和int,或者你可以使你使用的列表无类型并在开头或结尾添加int,或者只是获取int的字符串值和在开头或结尾添加它,稍后再解析。
编辑:你知道吗?您正在尝试获取包含列表长度的int。您不必这样做:列表已经知道它们有多大,您可以使用size()
检索它。
答案 2 :(得分:1)
您不能返回也包含整数的String列表。有几件事可以解决这个问题:
List<String>
参数;该方法填充列表并返回一个int。size()
的{{1}}方法来确定方法返回后的条目数。List
和int
字段的类,并返回该字段而不仅仅是List<String>
。List<String>
数组作为初始化为单个元素的参数传递。将整数返回值存储在数组的第0位。 (调用方法时,要求数组至少为1长。)人们可能会想出其他技术。
答案 3 :(得分:1)
对于这个特例,最简单的答案是Mark Elliott,他似乎是唯一一个阅读readFile()
正在做什么的人。返回的行数为usersArray1.size()
。
另一个小问题。 (在此重复您的使用示例以供参考)
List<String[]> usersArray1 = new ArrayList<String[]>();
usersArray1=complianceTracker.readFile();
第一行是不必要地创建ArrayList<String[]>
的实例,它将在第二行执行后准备好进行GC。然后,usersArray1
引用将引用在readFile()
方法的第一行上创建的对象,不会引用引用usersArray1
声明和初始化时创建的对象。
答案 4 :(得分:0)
创建一个bean。
public class ResultBean
{
private List<String> userArray;
private Integer anotherResult;
//create get set here
}
稍后您的readFile只需返回此resultBean类。
public ResultBean readFile()
{
ResultBean bean = new ResultBean();
//your existing logic here.
bean.setUserArray(new ArrayList<String>()); //please implement your own set here. This is just an example.
bean.setAnotherResult(Integer.valueOf(0));
return bean;
}
答案 5 :(得分:0)
int通过值传递,默认情况下不在java中引用。一个简单的方法是创建一个小类。尝试像
这样的东西public class Data
{
public List<String[]> usersArray1;
public int value;
}
你可以简单地将它传递给你的方法并将string []的List存储在那里,int也可以进入。希望这有帮助!
答案 6 :(得分:0)
每当您需要返回多个数据时,您有两个选择,有时一起使用:
答案 7 :(得分:0)
基本上有两种方法可以解决两件事:
new int[1]
变量传递给函数,然后在函数中更改该“数组”的内容,并在函数后从中读取。AtomicInteger
)。List
对象传递给函数并对其进行修改(同时保持相同的List
引用)。