【问题标题】:Null when splitting a string拆分字符串时为空
【发布时间】:2014-11-30 08:28:24
【问题描述】:

我需要为一个数组创建自己的排序方法,然后我开始将文本文件拆分为一个填充了单词的数组。文件格式为:一个整数 n,后跟 n 个单词。

这是一个例子:4 hello hello world hello

但是,我的数组打印:[null4, hello, hello, world, hello]

为什么!我不明白为什么之前有一个空值。而且,如果我删除数字 4(目前在我的程序中没有任何作用),我会得到:[nullhello, hello, world, hello]

你能帮我删除这个空值吗?提前致谢!

public static void main(String[] args) throws FileNotFoundException {
    filePath = "***TEXT FILE HERE***";

    fileInput = new Scanner(new File(filePath));
    convertFile(fileInput);
}

public static void convertFile(Scanner file) {

    String line;

    while (fileInput.hasNextLine()) {
        line = fileInput.nextLine();
        fileData = fileData + line;
    }

    String[] array = createArray(fileData);
    System.out.println(Arrays.toString(array));
}

public static String[] createArray(String data) {
    String[] dataArray = data.split("\\s+");

    return dataArray;
}

【问题讨论】:

    标签: java arrays string file split


    【解决方案1】:

    您在使用 fileData 变量之前没有对其进行初始化。

    试试

    fileData = "";
    

    【讨论】:

    • 如果它对您有用,请按左侧的勾号接受答案。
    【解决方案2】:
    fileData = fileData + line;
    

    这不是构建字符串的最佳选择...尝试用 StringBuilder 替换它

    StringBuilder fileData = new StringBuilder(); // to instantiate
    fileData.append(line + "\n"); // to add lines
    String finalString = fileData.toString(); // to build the string
    

    对于较大的字符串,您的连接方法会变得非常慢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多