数组索引超出界限 - 不确定在哪里查看

时间:2013-10-25 02:53:32

标签: java arrays exception binary-search-tree

我运行程序时遇到异常。它编译正常,它工作得更早,所以我不确定是什么问题。 错误: http://gyazo.com/091235db6cc37154e8f7304e4c1482a8

它应该打印出横向树中给出的序列。

import java.io.*;
import java.util.Scanner;

public class PrintSideWays{

    public static void main (String[] args){
        PrintSideWays p = new PrintSideWays();
        p.start(args[0]);

    }

    public void start (String args){
        buildTree(args);

    }

    public void buildTree(String preorder){

        BinarySearchTree<StringItem, String> bst = new BinarySearchTree<StringItem, String>();
        StringItem stringItem;



        System.out.println("Sideways printing tree by wcor690:");



        for ( int i=0; i < preorder.length() ; i++){
            String letter = preorder.substring(i,i+1);
            stringItem = new StringItem(letter);
            bst.insert(stringItem);



        }
         TreeNode root = bst.getRoot();
         print(root, " ");

        System.out.print("Inorder traversal:");
         inorderTraversal(root);
         System.out.println();

        System.out.println("Please enter the remove sequence: ");
        Scanner in = new Scanner(System.in);
        String userRemove = in.next();

        for(int i = 0; i < userRemove.length(); i++){
            String letter =  userRemove.substring(i,i+1);
            StringItem removeString = new StringItem(letter);
            try{ bst.delete(removeString);
                }
            catch(TreeException e){
                System.out.println(letter + " not found in tree.");
            }
        }

        print(root, " ");

        System.out.print("Inorder traversal:");
         inorderTraversal(root);
          System.out.println();
    }

    public void inorderTraversal(TreeNode node){

     if(node == null){
      return;
     }

      inorderTraversal(node.getLeft());
      System.out.print(node.getItem());
      inorderTraversal(node.getRight());

    }
    public void print(TreeNode treeNode, String indent ) {  
        if (treeNode == null){ 
            return; 
        }

        print( treeNode.getRight(), indent + "   " );  
        System.out.println(indent + treeNode.getItem());  
        print(treeNode.getLeft(), indent + "   ");
    }
}  

2 个答案:

答案 0 :(得分:0)

p.start(args[0]);是基于错误的问题。你没有传递任何论据。

答案 1 :(得分:0)

它说“在PrintSideWays.main(PrintSideWays.java:8)”这意味着错误在程序的主要方法中。错误位于第8行。这意味着它们在这行代码中是错误的:p.start(args[0]) 所以如果args [0]的数组超出范围,则它不能存在。