2016-07-31 3 views
0

最近、私は方程式を分割して読み込む方法を作って、その部分を読み込んで記号を見つけ、記号の前後に番号を付けるループに入ります。問題は私がエラーを取得することですが、私はそれを見ることができる前に消えて、私が正しい場合、分割後に+記号を読み取ることができません。どんなタイプなのかわからなくても、どのようにして例外をキャッチできるのか分かりません。ありがとう。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'を取得していますか? "debug"オプションを使用して、print文の前にブレークポイントを追加します。また、 '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 { 
    ... // do stuff 
} catch (Throwable thrown) { 
    thrown.printStackTrace(); 
} 

をしかし、注意してください、Throwableをキャッチすることは一般的に悪い習慣であり、ブランケットキャッチはです。すべての例外は、通常、悪い考えです。実際のコードでは、特定の例外タイプをキャッチしようとします。

これをデバッグする最も簡単な方法は、IDEにブレークポイントを設定し、コードをステップ実行することです。私の推測(コードの残りの部分を見ずに)あなたのエラー/例外は、コードの他の部分から来ているということです。

+0

助けてくれてありがとう、私はまだこの方法を使用していますが、どちらの方法でもShunting-Yardアルゴリズムに切り替えるつもりです。 – furProgrammer

関連する問題