Java 将整数从文本文件读入arraylist
我读过这两篇堆栈溢出文章:和。我已经找到了答案,但仍然不知道答案在哪里 我试图读入文本文件()并将其存储在ArrayList中。但是,当我继续将ArrayList的内容打印到控制台时,不会返回任何内容 任何帮助都将不胜感激Java 将整数从文本文件读入arraylist,java,java-8,Java,Java 8,我读过这两篇堆栈溢出文章:和。我已经找到了答案,但仍然不知道答案在哪里 我试图读入文本文件()并将其存储在ArrayList中。但是,当我继续将ArrayList的内容打印到控制台时,不会返回任何内容 任何帮助都将不胜感激 public static void main(String[] args) throws IOException { ArrayList<Integer> test = new ArrayList<Integer>(); Scan
public static void main(String[] args) throws IOException {
ArrayList<Integer> test = new ArrayList<Integer>();
Scanner textFileOne = new Scanner(new File("ChelseaVector.txt"));
while (textFileOne.hasNext()) {
if(textFileOne.hasNextInt()) {
test.add(textFileOne.nextInt());
} else {
textFileOne.next();
}
}
textFileOne.close();
System.out.println(test);
}
publicstaticvoidmain(字符串[]args)引发IOException{
ArrayList测试=新的ArrayList();
Scanner textFileOne=新扫描仪(新文件(“ChelseaVector.txt”);
while(textFileOne.hasNext()){
if(textFileOne.hasNextInt()){
test.add(textFileOne.nextInt());
}否则{
textFileOne.next();
}
}
textFileOne.close();
系统输出打印LN(测试);
}
您需要跳过文件开头的[
字符,并将分隔符定义为]
:
Scanner textFileOne =
new Scanner(new File("ChelseaVector.txt")).useDelimiter(", ").skip("\\[");
List originalFile=new ArrayList(Files.readAllLines(path.get(“ChelseaVector.txt”));
List formattedFile=new ArrayList();
用于(字符串行:原始文件){
字符串newLine=line.replaceAll(“[”,”).replaceAll(“],”).replaceAll(“,”);
列表编号=Arrays.asList(String.join(“,”);
formattedFile.addAll(数字);
}
System.out.println(格式化文件);
您可以这样做
public static void main(String[] args) throws IOException {
ArrayList<Integer> test = new ArrayList<Integer>();
Scanner textFileOne = new Scanner(new File("ChelseaVector.txt")).useDelimiter(",");
while (textFileOne.hasNext()) {
if (textFileOne.hasNextInt()) {
test.add(textFileOne.nextInt());
} else {
int number=Integer.parseInt(textFileOne.next().replaceAll("[\\[\\]]","").trim());
test.add(number);
}
}
textFileOne.close();
System.out.println(test);
}
publicstaticvoidmain(字符串[]args)引发IOException{
ArrayList测试=新的ArrayList();
Scanner textFileOne=新扫描仪(新文件(“ChelseaVector.txt”)。使用分隔符(“,”);
while(textFileOne.hasNext()){
if(textFileOne.hasNextInt()){
test.add(textFileOne.nextInt());
}否则{
int number=Integer.parseInt(textFileOne.next().replaceAll(“[\[\\]]”,“).trim());
测试。添加(编号);
}
}
textFileOne.close();
系统输出打印LN(测试);
}
因为您的文件只包含一行,所以我认为您不应该使用循环。
如果您正在使用
String[]strings=Files.lines(path.get(“ChelseaVector.txt”)).findFirst().split(\\D+”);
List ints=Arrays.stream(strings).map(Integer::valueOf.collect(Collectors.toList());
这可能是由于文件的结构。请注意,“ChelseaVector.txt”
的内容用方括号括起来([]
)。尝试删除它们。是的,但我遇到一个异常:索引0附近的未关闭字符类[@FeelingLikeAJabroni arg,忘记转义它。已编辑并修复。工作正常,谢谢……我可以添加replace()方法删除[]吗?至少根据我的观察,它遗漏了最后一位数字。
public static void main(String[] args) throws IOException {
ArrayList<Integer> test = new ArrayList<Integer>();
Scanner textFileOne = new Scanner(new File("ChelseaVector.txt")).useDelimiter(",");
while (textFileOne.hasNext()) {
if (textFileOne.hasNextInt()) {
test.add(textFileOne.nextInt());
} else {
int number=Integer.parseInt(textFileOne.next().replaceAll("[\\[\\]]","").trim());
test.add(number);
}
}
textFileOne.close();
System.out.println(test);
}
String[] strings = Files.lines(Paths.get("ChelseaVector.txt")).findFirst().split("\\D+");
List<Integer> ints = Arrays.stream(strings).map(Integer::valueOf).collect(Collectors.toList());