2012-02-12 6 views
-1

こんにちは私はあなたが配列に格納されますが、私の問題はどのように入力式がab + cのようなときに2つの変数の間に置くことができますか?値。それが最後のstack配列のインデックスと等しくなるまで、あなたがkをインクリメントするのでブール式ANDゲートJava

stack = strexp.toCharArray();  
for (int k = 0; k < stack.length; k++) { 
    if (Character.isLetter(stack[k]) && Character.isLetter(stack[k+1])){ 
    temp[k] = stack[k]; 
    temp[k+1] = '*'; 
    temp[k+2] = stack[k+1]; 
    } 
} 
+5

これは書かれているとおり、実際は不明です。また、宿題ですか? –

+0

私はコードを実行すると、nullpointerexceptionと言っているエラーがあります。例えば、入力された式はab + cである。この式を配列に格納すると、a * b + cになります。宿題ではありません。 – steph22

答えて

2

あなたは、ArrayIndexOutOfBounds例外を受け取るべきあなたはstack[k+1]にアクセスしよう: はここに私のコードです。

あなたのループ式は

for (int k = 0; k < (stack.length-1); k++) 

NullPointerExceptionの原因が直接見えないように持っていますが、私はあなたがtemp配列を初期化していないと信じています。おそらくあなたはそれが正確なサイズであるかどうかわからないためです。

私は StringBuilderの代わりに リストに結果を格納したい:

StringBuilder resultBuilder = new StringBuilder(); 
for (int k = 0; k < (stack.length-1); k++) { 
    resultBuilder.append(stack[k]); 
    if (Character.isLetter(stack[k]) && Character.isLetter(stack[k+1])) { 
    resultBuilder.append('*'); 
    } 
} 
resultBuilder.append(stack[stack.length-1]); // don't forget the last element 
+2

私は 'ArrayList'の代わりに' StringBuilder'を使うことを提案したいと思います。 –

+0

確かに、ありがとう、StringBuilder!私は分でそれを変更します! –

+0

ありがとうございました – steph22

0

は、2つの問題があります。

1)NPE - temp[]

2をintializingによって解決されます)ArrayIndexOutOfBoundsException at Character.isLetter(stack[k + 1])

両方を解決するには、次のコードを使用します。

String strexp = "ab+c"; 
    char[] stack = strexp.toCharArray(); 
    for (int k = 0; k < stack.length - 1; k++) 
    { 
     if (Character.isLetter(stack[k]) && Character.isLetter(stack[k + 1])) 
     { 
      char temp[] = new char[3]; 
      temp[k] = stack[k]; 
      temp[k + 1] = '*'; 
      temp[k + 2] = stack[k + 1]; 
     } 
    }