Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串数组的元素无法与字符串进行比较_Java_Arrays_String - Fatal编程技术网

Java 字符串数组的元素无法与字符串进行比较

Java 字符串数组的元素无法与字符串进行比较,java,arrays,string,Java,Arrays,String,我有一个简单的技术问题: 我正在尝试读取此文件: 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 Array

我有一个简单的技术问题: 我正在尝试读取此文件:

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();

        } 
我做了一些测试,但我仍然不明白为什么我的情况不起作用

提前感谢。

您必须将其替换为或替换为和:

使用或,您将始终进入块,因为字[i]始终不等于inf或0。 在此之前,循环中的条件是错误的。替换

for (int i=0; i<words.length-1;i++)

否则,您将错过每行的最后一个元素

编辑: 您还必须从更改另一个循环中的条件

   for (int i=0; i<words.length-1;i++)
            {
                nodes.add(new Node(i, words[i]));
            }


如果words[i].equalsinf&&!words[i].equals0这是javascript,但适用于:not-A或B转换为not A和not BHey它实际上可以工作,但是对于words.length我在线程主java.lang.IndexOutOfBoundsException中获得AEException异常:索引:5,大小:5在java.util.ArrayList.rangeCheckUnknown Source在java.util.ArrayList.getUnknown Source编辑了我的答案。您有另一个循环,它会中断到早期,因此您的节点列表太短。现在我在线程主线程java.lang.IndexOutOfBoundsException中获取异常:索引:6,大小:6位于java.util.ArrayList.rangeCheckUnknown Source位于java.util.ArrayList.getUnknown Source
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]));
            }