首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么.size()在这个ArrayList上不能正常工作?

为什么.size()在这个ArrayList上不能正常工作?
EN

Stack Overflow用户
提问于 2017-03-01 05:17:50
回答 2查看 159关注 0票数 0

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

代码语言:javascript
复制
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);
}
}
EN

回答 2

Stack Overflow用户

发布于 2017-03-01 05:24:25

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

代码语言:javascript
复制
while(sc.hasNextLine()) {
    String line = sc.nextLine();
    nameList.add(line);
    System.out.println("Line: '"+line+"'");
}

运行修改后的程序,注意字符串两边是否有单引号。如果您的输出在一对引号内产生多行,则问题在于您的输入没有运行程序的系统所需的行尾标记。

票数 0
EN

Stack Overflow用户

发布于 2017-03-01 05:28:14

根据Scanner java文档...

Character.isWhitespace可以识别扫描仪使用的默认空格分隔符

是否确实了解文件的内容以及它是如何创建的(Linux/Windows)。

例如,当在Linux上运行Java进程并读取在Windows上创建的文件时,我经常必须使用dos2unix命令来更正文件格式,否则它不会按预期处理,除非您在java代码中指定正确的文件编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42518907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档