2016-07-31 103 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