ArrayOutofBounds包含可变数量的单词的标记

时间:2013-04-08 03:24:18

标签: java token

我正在尝试从可能包含不同字数的文本文件中读取命令。我正在尝试使用IF语句,以便我不会让数组超出范围异常。 谁能告诉我我做错了什么?谢谢。 这是发生它的代码部分。

    read = new Scanner(new File("Phone.txt"));

    //this will loop thru file until end of file
    while (read.hasNext())
    {

    whole = read.nextLine().trim();
    String[] tokens = whole.split(" ");//array to split up line
    command = tokens[0].toLowerCase();//all lines will have at least one word
    if (tokens.length > 0)//if more than one word, 2nd will be name
    {
        name1st.setFirst(tokens[1]);
    }

    if (tokens.length > 1)//if more than one word, 3rd will be phone #
    {
        phone = tokens[2];
    }
        switch (command)
        {
            case "add":
                nameList.add(name1st, phone);
                break;
            case "locate":
                nameList.getValue(name1st);
                break;
            case "remove":
                    nameList.remove(name1st);
                break;
            case "print":
                    nameList.display();
        }//end switch

    }//end while

2 个答案:

答案 0 :(得分:0)

数组索引从0.And开始。数组的长度等于数组中元素的数量。

    if (tokens.length > 1)//if more than one word, 2nd will be name
    {
        name1st.setFirst(tokens[1]);
    }

    if (tokens.length > 2)//if more than one word, 3rd will be phone #
    {
        phone = tokens[2];
    }

您可以按上述方式更正您的代码。

答案 1 :(得分:0)

好,

想通了。长度与索引不同。如果它的idex为0,则它​​的长度为1,所以我不得不在if by 1中提高我的条件。然后它运行了。感谢任何同时也在为此工作的人