【问题标题】:java.lang.NumberFormatException: For input string: "1"java.lang.NumberFormatException:对于输入字符串:“1”
【发布时间】:2016-03-25 07:28:54
【问题描述】:

“out.txt”内容是

1

我的JAVA代码是这样的。

    int val=0;
    BufferedReader br = new BufferedReader(new FileReader("out.txt"));

    while(true) {
        String line = br.readLine();
        if (line==null) break;
        val=Integer.parseInt(line);
    }
    br.close();

调试器说,

java.lang.NumberFormatException:对于输入字符串:“1”

我需要使用“out.txt”中的 1。 我如何使用 1 作为整数? 感谢您的关注:)

【问题讨论】:

  • 这很奇怪,你能给我们看看你的txt文件吗?
  • "out.txt" 只有一个数据,正如我在我的问题中所写的那样。
  • 看看有没有隐藏的特殊字符、空格等
  • 没有任何隐藏的特殊字符 :) 但谢谢你回答我

标签: java numberformatexception


【解决方案1】:

我删除了这个不可见的 Unicode 字符,现在解析为 INT 效果很好。我知道这里不是这样,但也许可以帮助其他人。

text = text.replaceAll("\\uFEFF", "");

【讨论】:

  • 是的,这是 BOM。我遇到了与 OP 完全相同的问题,结果我从 Excel 导出了一个 CSV 文件作为 UTF-8 WITH BOM。 Java 将 BOM 视为输入的一部分。我重新导出到不同的编码,问题就解决了。 BOM on WikiPedia
【解决方案2】:

您必须有尾随空格。使用trim()函数如下:

val = Integer.parseInt(line.trim());

这里是sn-p的代码:

int val = 0;
BufferedReader br = new BufferedReader(new FileReader("out.txt"));

String line = null;
while(true) {
    line = br.readLine();
    if (line == null) break;
    val = Integer.parseInt(line.trim());
}
br.close();

另外,如果您想检查 String 是 null 还是 empty,您可以开始使用 Apache Commons StringUtils,如下所示:

if (StringUtils.isEmpty(line)) break;

【讨论】:

  • 我先尝试了 'trim()' 但没有成功 ^^;;但谢谢你回答我
【解决方案3】:

哎呀。昨天下面的代码运行良好,所以我如您所见上传了它。但是今天,我尝试再次编译一次没有'.toString()',它也可以工作。所以这是我的错误,很抱歉打扰你们。 (我不知道为什么前天没有'.toString'就不能工作。)


非常感谢关心我的问题的人,但我找到了答案(我不知道如何自己找到它)

以下代码运行良好 :) 谢谢!

    BufferedReader br = new BufferedReader(new FileReader("out.txt"));
    int val=0;

    while(true) {
        String line = br.readLine();
        if (line==null) break;
        val=Integer.parseInt(line.toString());
    }
    br.close();

【讨论】:

  • line 已经是一个字符串了!如果你在上面做toString(),你觉得会发生什么?
  • 这没有意义
猜你喜欢
  • 2012-12-05
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2013-08-06
相关资源
最近更新 更多