在 for 循环中读取拆分

reading a split in a for loop

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

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

    //}
}

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

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 通常是不好的做法,并且一揽子捕获 所有 异常通常也是一个坏主意。对于实际代码,请尝试捕获特定的异常类型。

调试它的 easiest/best 方法应该是在 IDE 中设置断点并单步执行代码。我的猜测(没有看到其余代码)是您的 error/exception 来自其他代码段。