質問: javaで特定の文字列から(を取り出しif文に(なら通るようなプログラムを作ったのですが、特定の文字列から取り出した場合if文がうまく認識されません改善方法を教えてください。 下記プログラムの例 strcalに"(1+4)×(3+7)÷5"が格納されている。 kak2にstcalcから最初の一文字目"("を得る。 kakは"("だけが格納されている。 この時if文の条件を"("が格納されているなら真である。 結果としてはkakは真であるが、kak2は偽であった。 <プログラム> ``` String strcalc=("(1+4)×(3+7)÷5"); String kak="("; System.out.println("kak:"+kak); if(kak=="(") System.out.println("通った"); else System.out.println("通らない"); String kak2=strcalc.substring(0,1); System.out.println("kak2:"+kak2); if(kak2=="(") System.out.println("通った"); else System.out.println("通らない"); ``` <結果> ``` kak:( 通った kak2:( 通らない ```
回答: 文字列の比較を行なっている部分を`if (kak.equals("("))`や`if (kak2.equals("("))`のように書き換えてください。これで`kak`や`kak2`と`")"`の内容を比較して同じかどうか判断した結果が返るようになります。 こうしなければいけない理由は、別の方の回答のリンク先をご覧ください。