最近我创建了一种方法,通过拆分它来读取方程,然后进入一个循环,读取它所在的部分以找到符号并给出符号之前和之后的数字。问题是我确实得到了一个错误,但它在我看到它之前消失了,如果我正确的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
//}
}
答案 0 :(得分: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中设置断点并逐步执行代码。我的猜测(没有看到其余的代码)是你的错误/异常来自其他一些代码。