- ベストアンサー
下記のような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("エラー"); } } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Java言語のStringは、C言語などのような変数ではなく、オブジェクトです。 したがって、 == は効きません。 オブジェクトの操作の基本である オブジェクト名.メソッド といった記述にのっとり操作します。 この場合だと、 .equals メソッドを用いて、 if(a.equals("*")^a.equals("/")){ のような書き方で働くはずです。 また、.substring()メソッドを使って if((a.substring(1,1)=="*")^(a.substring(1,1)=="/")){ でもできるはずです。手元で実行していないので自信が少なめですが・・・
その他の回答 (1)
- edomin7777
- ベストアンサー率40% (711/1750)
if((a == "*") ^ (a == "/")){ を if((a == "*") || (a == "/")){ にしてみる? ※通常その前に「a」に入っている値を確認するけどね…。
お礼
変更してみましたけど、ダメでした。 でも、||の意味を知れたので良かったです。 ありがとうございました。
お礼
ありがとうございます。 きちんとプログラムを判定してくれました。 素早い返答ありがとうございました。