簡體   English   中英

字符串數組的元素無法與字符串進行比較

[英]elements of string array unable to compare with a 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 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(“ inf”)||!words [i] .equals(“ 0”))

當字符串不是“ inf”或“ 0”時,您就開始添加內容,但是當我實際運行時,它仍然添加“ 0”和“ inf”,從而導致錯誤:

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)

我做了一些測試,但是我仍然不明白為什么我的狀況不起作用。

提前致謝。

你要替換or通過與and

 if (!words[i].equals("inf") && !words[i].equals("0"))

使用or您將始終輸入該塊,因為words[i]始終不等於“ inf”或“ 0”。 直到您的循環條件錯誤。 更換

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]));
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM