奇怪的ArrayIndexOutOfBoundsException?

时间:2014-08-06 06:15:48

标签: java arrays graph user-input

我遇到了一个我认为不应该发生的错误,我首先通过对驱动程序中的所有内容进行硬编码来测试代码,然后我创建了一个菜单,这就是它发生的地方。这是其中一种方法的错误。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
   at graph.GraphMatrix.dfs(GraphMatrix.java:92)
   at graph.Driver.main(Driver.java:61)

这是Graph

的深度优先搜索方法
public ArrayList<String> dfs(String x)
{
    ArrayList<String> visited = new ArrayList<String>();
    Stack<String> stack = new Stack<String>();
    stack.push(x); 

    while(!stack.isEmpty())
    {
        visited.add(x);

        for(int i = 0; i < vertices.length; i++)
        {
 line92 --> if(matrix[getIndex(x)][i] && !visited.contains(vertices[i]))
            {
                stack.push(vertices[i]);
            }
        } 
        x = stack.pop();
    }
    return visited;
}

我认为它与getIndex方法有关,但我不这么认为,因为如果我在驱动程序中对其进行硬编码,例如m.dfs("B");一切都运行良好

 public int getIndex(String x)
 {
    for(int i = 0; i < vertices.length; i++)
        if(x.equals(vertices[i]))
            return i;
    return -1;
 }

但是当我这样做让用户从菜单中选择并输入字母时它会给我arryoutofbound ....我的其他菜单选项同样如此,硬编码工作但用户输入正在给arryoutofbound。有什么想法吗?感谢。

 case 3:
    System.out.println("Do Depth-first-search for: ");
    key = kb.nextLine();
    kb.next();

line61->System.out.println(m.dfs(key));
    break;

0 个答案:

没有答案