• ベストアンサー

下記のようなjavaのプログラムで、* や / を入力しても,

下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • seastar3
  • ベストアンサー率69% (99/142)
回答No.2

Java言語のStringは、C言語などのような変数ではなく、オブジェクトです。 したがって、 == は効きません。 オブジェクトの操作の基本である オブジェクト名.メソッド といった記述にのっとり操作します。 この場合だと、 .equals メソッドを用いて、 if(a.equals("*")^a.equals("/")){ のような書き方で働くはずです。 また、.substring()メソッドを使って if((a.substring(1,1)=="*")^(a.substring(1,1)=="/")){ でもできるはずです。手元で実行していないので自信が少なめですが・・・

srx-atx
質問者

お礼

ありがとうございます。 きちんとプログラムを判定してくれました。 素早い返答ありがとうございました。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

if((a == "*") ^ (a == "/")){ を if((a == "*") || (a == "/")){ にしてみる? ※通常その前に「a」に入っている値を確認するけどね…。

srx-atx
質問者

お礼

変更してみましたけど、ダメでした。 でも、||の意味を知れたので良かったです。 ありがとうございました。

関連するQ&A