• 締切済み

文字入力チェック

お世話になります、JAVA言語について勉強中の佐藤と申します。 今回は文字列のチェックを行いたいと思い、ロジックを組んでみました。 String sEnzanshi; if(args.length==3){ }else{ System.out.println("入力パラメータがおかしいですよ"); return; } sEnzanshi= args[2]; System.out.print(sEnzanshi); //第3パラメータチェック if(sEnzanshi == "add"){ }else if(sEnzanshi == "min"){ }else if(sEnzanshi == "mul"){ }else if(sEnzanshi == "div"){ }else{ System.out.println("第3パラメータが不正です"); return; } args[2]の内容が"add"、"min"、"mul"、"div"であれば次処理へ、それ以外はエラーとするようなロジックを組んだつもりです。 ですが、結果は"add"と入力してもエラーで返ってきてしまいます。 文字列チェックの前にSystem.out.printでargs[2]の内容が正しいか確認しましたが、addと正しく出力されました。 原因が分かる方はいらっしゃいますでしょうか? 宜しくお願い致します。

みんなの回答

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

== は オブジェクトの比較になるので、同一オブジェクトじゃないと不一致になります。 sEnzanshiはString[]の3番目のStringの事で、 固定文字列として用意された"add"とは別オブジェクトなので一致しません。 文字列の内容比較はequals() もしくは 英大文字小文字を意識しないのなら equalsIgnoreCase()メソッドを使います。

satohdesu
質問者

お礼

早々のご解答をありがとうございます。 なるほど。==はオブジェクトの比較に使用するのですね。 早速、equals()を使わせて頂きましたところ、上手く処理する事ができました。 心から感謝致します。

回答No.1

文字列の比較って ==じゃなくて equalsだったような。未検証。

satohdesu
質問者

お礼

文字列の比較は==では出来ないのですね。 知りませんでした・・・。 equalsを使用したところ、思うような処理結果が得られました。 ありがとうございました。