为什么没有.size()在这个ArrayList上正常工作?

时间:2017-02-28 21:17:50

标签: java arraylist

我已将dat文件导入ArrayList。我的问题是,虽然它打印出文件中的所有名称,但它不会给我正确的大小。相反,它只打印出1。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class TestArray {
    public static void main (String [] args){
    String filePath = "C:\\Users\\Admin\\workspace\\Fund III\\src\\names.dat";

    Scanner sc = null;
    try {

        sc = new Scanner(new File (filePath ));
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    //Makes Array list
    ArrayList<String> nameList = new ArrayList<String>();

    //Dumps names into array
try{
    while(sc.hasNextLine())
    {
        nameList.add(sc.nextLine());
    }
   }
    catch(Exception e)
    {
        System.out.println("Error: " + e);
    }
    System.out.println(nameList.size());
    System.out.println(nameList);
}
}

2 个答案:

答案 0 :(得分:0)

您的文件似乎只有一行。以下是检查方法:

BETWEEN

运行修改后的程序,并查看字符串周围的单引号。如果您的输出在一对引号内产生多行,则问题是您的输入没有运行程序的系统所期望的行尾标记。

答案 1 :(得分:0)

根据Scanner java doc ...

  

扫描程序使用的默认空白分隔符已被识别   Character.isWhitespace

您确定了解文件的内容及其创建方式(Linux / Windows)。

例如,当在Linux上运行Java进程并读取在Windows上创建的文件时,我经常必须使用dos2unix命令来更正文件格式,否则它将无法按预期处理,除非你需要付出额外的努力来在java代码中指定正确的文件编码。