我有一个简单的技术问题: 我试图阅读这个文件:
S,B,C,D,E,F
0,2,1,inf,inf,inf
inf,0,2,inf,inf,inf
inf,inf,0,4,5,inf
inf,1,inf,0,inf,5
inf,inf,inf,inf,0,1
inf,inf,inf,inf,inf,0
并将每个元素放在一些数组中:
BufferedReader br = null;
FileReader fr = null;
nodes = new ArrayList<Node>();
edges = new ArrayList<Edge>();
try
{
fr = new FileReader(filePath);
br = new BufferedReader(fr);
String firstLine = "";
String line = "";
String[] words = null;
firstLine = br.readLine();
words = firstLine.split(separtor);
for (int i=0; i<words.length-1;i++)
{
nodes.add(new Node(i, words[i]));
}
int node = 0;
while ((line = br.readLine()) != null)
{
words = line.split(separtor);
for (int i=0; i<words.length-1;i++)
{
if (!words[i].equals("inf") || !words[i].equals("0"))
{
edges.add(new Edge(nodes.get(node), nodes.get(i), Integer.parseInt(words[i])));
}
}
node++;
}
}
catch (IOException e)
{
e.printStackTrace();
}
问题出现在这一行: if(!words [i] .equals(&#34; inf&#34;)||!words [i] .equals(&#34; 0&#34;))
当字符串不是&#34; inf&#34;或&#34; 0&#34;然后你开始添加东西但是当我实际运行时,它仍然添加&#34; 0&#34;和&#34; inf&#34;导致错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "inf"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
我做了一些测试,但我仍然无法理解为什么我的病情不起作用。
提前致谢。
答案 0 :(得分:1)
您必须将or
替换为and
:
if (!words[i].equals("inf") && !words[i].equals("0"))
使用or
,您始终会进入该区块,因为words[i]
始终不等于&#34; inf&#34;或&#34; 0&#34;。
在你的循环中你的状况是错误的。替换
for (int i=0; i<words.length-1;i++)
通过
for (int i=0; i<words.length;i++)
否则你会错过每一行的最后一个元素。
编辑: 你还必须改变其他循环中的条件
for (int i=0; i<words.length-1;i++)
{
nodes.add(new Node(i, words[i]));
}
到
for (int i=0; i<words.length;i++)
{
nodes.add(new Node(i, words[i]));
}