2016-07-31 105 views
0

最近,我创建了一个方法,通过分割方程来读取方程,然后进入一个循环,读取它所在的部分以查找符号并在符号之前和之后给出数字。问题是我得到一个错误,但它在我看到它之前就消失了,如果我是正确的,java在分裂之后不能读取+号。我不确定我怎么能够在不知道它是什么类型的情况下捕捉到异常,所以任何帮助都会很好。谢谢。在for循环中读取分割

private void sortEquasion(){ 
    String[] t = Equasion.split("\\+"); // this line added on 
    for(int counter = 0; counter<t.length; counter++){ // this part added 
     if(t[counter].contains("+")){ 
      String i = t[counter -1]; 
      String i2 = t[counter + 1]; 
      System.out.println(i + i2); 
     } 
    } 
    //if(Equasion.contains("(")){ //untage this if code above does not work 

    //} 
} 
+0

您使用的是什么编程环境? –

+0

我正在使用eclipse。 – furProgrammer

+1

您可能正在获取'ArrayIndexOutOfBoundsException'。使用“调试”选项并在打印语句之前添加一个断点。另外,'t [counter]'可能不会包含'+'(因为你正在根据'+'分割) – TheLostMind

回答

0

不确定您看到了哪个错误。但是如果你在一个字符上分割,那么这个字符就不会出现在结果数组中的任何字符串中。例如下面的代码:

public static void main(String[] args) { 
    String equation = "1 + 2 = 3"; 
    for (String s : equation.split("\\+")) { 
     System.out.println(s); 
    } 
} 

会导致输出:

1 
2 = 3 

另外请注意,有人说,有一个for循环与索引:

for (counter i = 0; i < counter.length; counter++) { 
    // bad: index out of bounds exception on last iteration 
    String s = t[counter + 1]; 
} 

但是,不应该是你所看到的例外,因为该代码不应该被执行,因为拆分会删除所有+。如果你的代码抛出异常(或错误),但你不知道的东西它是(而且是越来越吞下出于某种原因),你可以使用try catch结构:

try { 
    ... // do stuff 
} catch (Throwable thrown) { 
    thrown.printStackTrace(); 
} 

请注意,虽然,那么赶上Throwable就是一般的不好的做法,并且全部捕获全部例外通常也是一个坏主意。对于实际的代码尝试捕获特定的异常类型。

调试它的最简单/最好的方法应该是在您的IDE中设置一个断点并逐步执行代码。我的猜测(没有看到代码的其余部分)是你的错误/异常来自其他代码片段。

+0

感谢您的帮助,我仍然会尝试找到仍然使用这种方法,但无论哪种方式最终我要切换到调车场的算法。 – furProgrammer