Java 标记化数组中的空格
我正在编写一个Java程序,它接受一个文本文件,在空白和Java 标记化数组中的空格,java,file-io,Java,File Io,我正在编写一个Java程序,它接受一个文本文件,在空白和上拆分它,然后通过Integer.parseInt()和Double.parseDouble()对数字进行操作 然而,每当我试图运行我的程序时,我都会得到一个NumberFormatException,因为我的程序显然是在为令牌拾取空白。下面是我的代码、文本文件和错误 代码: 错误消息: Exception in thread "main" java.lang.NumberFormatException: For input string:
上拆分它,然后通过Integer.parseInt()
和Double.parseDouble()
对数字进行操作
然而,每当我试图运行我的程序时,我都会得到一个NumberFormatException
,因为我的程序显然是在为令牌拾取空白。下面是我的代码、文本文件和错误
代码:
错误消息:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at csu.mcdonald.ASrch.main(ASrch.java:33)
我试图执行你的程序。我注意到,通过拆分变量“line”来获取字符串数组将产生一个数组
[1, 0, , , 1, 6, 2, 6, 3, 6]
这就是为什么要排队
edges.add(new Edge(Integer.parseInt(tokens[i]),
Double.parseDouble(tokens[i + 1])));
正在引发异常
这里tokens[i]是一个空字符串,它将抛出一个NumberFormatException
请检查您的逻辑。尝试用此代码替换以下代码,这样可以解决您的问题 拆分的输出是-
[1,0,1,6,2,6,3,6]
旧代码
if(tokens[i + 2] == null || tokens[i] == ""))
if(tokens[i + 2] == null || tokens[i].equals(""))
新代码
if(tokens[i + 2] == null || tokens[i] == ""))
if(tokens[i + 2] == null || tokens[i].equals(""))
您能给出导致此错误的行吗?什么是
状态
,以及类边缘
?另外,State
似乎是一个自定义类。对不起states
是一个包含我将在程序中使用的状态列表的HashMap
,Edge
和State
几乎是同一个类,只是有一些不同的变量。给出错误的行是edges.add(newedge(Integer.parseInt(tokens[I]),Double.parseDouble(代币[i+1]));
@mynorka发布了我的答案,看看它是否对你有帮助我意识到了这一点,这就是我发布这个问题的原因。我对为什么会发生这种情况感到困惑。此外,我已经运行了我的程序好几次,但似乎找不到发生这种情况的原因。你能谈谈你的实际需求,以及你想要的类边缘和逻辑吗执行。这将帮助我解决你的问题