在Java中使用BufferedReader处理换行符和空字符串

蒂姆

我正在学习Java。我相信我在理解BufferedReader如何处理“ \ n”或“”字符串(换行符和空字符串)时遇到问题。

如果运行以下命令,则将这些字符串中的任何一个放入String数组都将失败。

    String [] strings = {"55", "23", ""};
    int total = 0;
    for (String str : strings)
    {
        if (str != null) {
            total += Integer.valueOf(str);
        }
    }
    System.out.println(total);

很好,对我来说很有意义。对我来说没有意义的是当我在读取文件时运行此代码时。

BufferedReader reader = null;
    int total = 0;
    try {
        reader = new BufferedReader(new FileReader("E:\\Testing\\Numbers.txt"));
        String line = null;
        while ((line = reader.readLine()) != null) {
                System.out.println(line);
                total += Integer.valueOf(line);
        System.out.println("Total: " + total);
    } catch(Exception e){
        System.out.println(e.getMessage());
    } finally {
        try {
            if (reader != null)
            reader.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

使用具有以下内容的文本文件:

5
2
3

它运行没有错误。如果我在同一文件()中添加了一个空白行,它将失败并显示以下消息For input string: ""

我添加了isNumeric函数来解决此问题,但是我不理解为什么在运行没有任何空行的代码时BufferedReader可以工作,即使它不喜欢“ \ n”或“”字符串也是如此。我在javadocs中查询了valueOf(),却没有发现任何对我有帮助的东西。

这是我使用了isNumeric函数的最终代码,并显示了它如何将“ \ n”和“”字符串视为非数字。

    BufferedReader reader = null;
    int total = 0;
    try {
        reader = new BufferedReader(new FileReader("E:\\Testing\\Numbers.txt"));
        String line = null;
        while ((line = reader.readLine()) != null) {
            if (isNumeric(line))
            {
                System.out.println(line);
                total += Integer.valueOf(line);
           }
            System.out.println("Skipping a non numeric value");
        }
        System.out.println("Total: " + total);
    } catch(Exception e){
        System.out.println(e.getMessage());
    } finally {
        try {
            if (reader != null)
            reader.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

}
public static boolean isNumeric(String str)
{
    try
    {
        int d = Integer.parseInt(str);
    }
    catch(NumberFormatException nfe)
    {
        return false;
    }
    return true;
}


6
Skipping a non numeric value
1
Skipping a non numeric value
Skipping a non numeric value
2
Skipping a non numeric value
62
Skipping a non numeric value
23
Skipping a non numeric value
Total: 94

最终,我确实在该站点上看到了这篇文章,并且很接近,但是我仍然无法弄清楚。

幽灵猫

当使用BufferedReader时,readLine()方法将自动使用任何“换行符”字符。

因此,从本质上讲,您的初始文件是

5 \ n ...

在将字符串提供给代码之前,只需删除\ n即可。如果该行只是\ n; 那么你得到“”。一种简单的检查方法是line.isEmpty()

关于:我不明白为什么在运行没有空行的代码时BufferedReader可以工作好吧,我不明白这个问题。如果您的代码仅读取带数字的行,那么您坐在那里的代码可以处理空行也没关系。或包含“无效”数字文本的行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中使用BufferedReader处理换行符和空字符串

来自分类常见问题

在Python中使用换行符分隔字符串

来自分类Dev

如何使用DocX库将换行符替换为空白/空字符串?

来自分类Dev

Java-使用正则表达式和换行符分割字符串

来自分类Dev

从Config :: Simple配置文件中使用换行符存储和读取字符串

来自分类Dev

使用换行符和制表符替换sed / awk字符串

来自分类Dev

将readline()与Python一起使用时,如何从列表中删除换行符或空字符串?

来自分类Dev

在换行符和逗号之间分割字符串

来自分类Dev

egrep用于指定的字符串和换行符

来自分类Dev

Azure Pipelines在脚本中使用包含换行符的字符串值设置变量

来自分类Dev

在vue中使用换行符分割字符串的问题

来自分类Dev

如何在 FOR /F 的带引号的字符串中使用换行符

来自分类Dev

从Java中的字符串修剪换行符

来自分类Dev

Java:测试字符串是否以换行符结尾

来自分类Dev

Java-显示显示换行符的字符串

来自分类Dev

Java:测试字符串是否以换行符结尾

来自分类Dev

Java-显示显示换行符的字符串

来自分类Dev

如何基于换行符拆分Java字符串

来自分类Dev

使用sed匹配包含换行符的字符串

来自分类Dev

使用sed匹配包含换行符的字符串

来自分类Dev

Java字符串:在换行符之前和之后删除所有其他空格

来自分类Dev

尝试使用Javascript和Regexp在类似CSV的字符串中删除多余的换行符

来自分类Dev

如何使用Linq在换行符和空格处拆分字符串?

来自分类Dev

如何使用Java脚本用换行符格式化XML字符串?

来自分类Dev

在提示字符串中使用变量时如何在read -p命令中使用换行符

来自分类Dev

用分隔符连接字符串值以处理空字符串和空字符串?

来自分类Dev

如何使用ResponseBody传递详细字符串,包括换行符和制表符

来自分类Dev

如何使用正则表达式验证动态制表符和换行符分隔的字符串?

来自分类Dev

如何使用ResponseBody传递详细字符串,包括换行符和制表符

Related 相关文章

  1. 1

    在Java中使用BufferedReader处理换行符和空字符串

  2. 2

    在Python中使用换行符分隔字符串

  3. 3

    如何使用DocX库将换行符替换为空白/空字符串?

  4. 4

    Java-使用正则表达式和换行符分割字符串

  5. 5

    从Config :: Simple配置文件中使用换行符存储和读取字符串

  6. 6

    使用换行符和制表符替换sed / awk字符串

  7. 7

    将readline()与Python一起使用时,如何从列表中删除换行符或空字符串?

  8. 8

    在换行符和逗号之间分割字符串

  9. 9

    egrep用于指定的字符串和换行符

  10. 10

    Azure Pipelines在脚本中使用包含换行符的字符串值设置变量

  11. 11

    在vue中使用换行符分割字符串的问题

  12. 12

    如何在 FOR /F 的带引号的字符串中使用换行符

  13. 13

    从Java中的字符串修剪换行符

  14. 14

    Java:测试字符串是否以换行符结尾

  15. 15

    Java-显示显示换行符的字符串

  16. 16

    Java:测试字符串是否以换行符结尾

  17. 17

    Java-显示显示换行符的字符串

  18. 18

    如何基于换行符拆分Java字符串

  19. 19

    使用sed匹配包含换行符的字符串

  20. 20

    使用sed匹配包含换行符的字符串

  21. 21

    Java字符串:在换行符之前和之后删除所有其他空格

  22. 22

    尝试使用Javascript和Regexp在类似CSV的字符串中删除多余的换行符

  23. 23

    如何使用Linq在换行符和空格处拆分字符串?

  24. 24

    如何使用Java脚本用换行符格式化XML字符串?

  25. 25

    在提示字符串中使用变量时如何在read -p命令中使用换行符

  26. 26

    用分隔符连接字符串值以处理空字符串和空字符串?

  27. 27

    如何使用ResponseBody传递详细字符串,包括换行符和制表符

  28. 28

    如何使用正则表达式验证动态制表符和换行符分隔的字符串?

  29. 29

    如何使用ResponseBody传递详细字符串,包括换行符和制表符

热门标签

归档