我将内容从文件移动到ArrayList时遇到问题。用户通过一个索引选择一条要添加到ArrayList的行。我已经尝试过使用quick.add(new Pastatas());但正如我所见,它将在其中添加我的空构造函数。
private void myobj() {
File FILE = new File(filex);
if (FILE.exists() && FILE.length() > 0) {
try {
Scanner SC = new Scanner(FILE);
for (int i = 0; i < FILE.length(); i++) {
if (SC.hasNextLine()) {
String storage = SC.nextLine();
System.out.println("ID: " + i + " " + storage);
}
}
System.out.println("select one.");
Scanner sc = new Scanner(System.in);
int userInputas = Integer.parseInt(sc.nextLine());
for (int j = 0; j < FILE.length(); j++) {
if (userInputas == j) {
quick.add(/*Probably problem here*/)
}
}
} catch (IOException e) {
System.err.println(e.getMessage() + "error");
}
}
答案 0 :(得分:0)
将较新的Path, Paths, Files
用于此类任务。
Path path = Paths.get(filex);
List<String> lines = Files.readAllLines(path);
System.out.println("Select one.");
Scanner sc = new Scanner(System.in);
int lineno = Integer.parseInt(sc.nextLine()); // Maybe 1 based
int index = lineno - 1; // Zero based index
if (0 <= index && index < lines.size()) {
String line = lines.get(index);
System.out.println("Selected: " + line);
quick.add(line);
}
逻辑错误:
FILE
(或上面的Path
)可能只是文件的昵称/名称。
长度是字节数,即文件大小。
因此,对于文本行的选择,必须做一些不同的事情,例如打开,阅读并最后关闭文件。 Files
类提供实用程序功能来执行诸如加载所有行之类的事情。
阅读您的评论后;也许更像是:
quick.add(new Pastatas(line));
实际上,如果文件不是文本文件,我们将需要知道文件的填充方式。