質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

660閲覧

javaの条件文が反応してくれません

horizon

総合スコア21

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/11/05 05:52

現在、javaでRPGもどきを制作しています。
そのうえで難易度を入力したときにeasyなら…normalなら…などと条件分岐をさせたいと思い、以下のコードを作成しました。

java

1package horizon; 2import java.util.*; 3class horizonRPG { 4 public static void main(String[] args){ 5 GameConfig easy = new GameConfig("easy",1500,2800.5,500,100,1000); 6 GameConfig normal = new GameConfig("normal",1500,2800.5,300,100,800); 7 GameConfig hard = new GameConfig("hard",1500,2800.5,250,100,500); 8 Scanner scn = new Scanner(System.in); 9 Random rdm = new Random(); 10 System.out.println("難易度を書いてね"); 11 String inputDifficulty = scn.next(); 12 if(inputDifficulty=="easy"){ 13 double nowMoney=easy.getMoney(); 14 int earnmoney = rdm.nextInt(3000); 15 System.out.println("[System]"+earnmoney+"ギルを拾った!"); 16 easy.setMoney(nowMoney+earnmoney); 17 System.out.println("現在の所持ギル:"+easy.getMoney()); 18 easy.villagerSpeak(); 19 if(easy.getMoney()<easy.getSwordPrice()){ 20 System.out.println("…と思ったが、お前のような貧乏人が来るところではない。"); 21 GameConfig.gameOver(); 22 } 23 try{ 24 int buyFlag = scn.nextInt(2); 25 if(buyFlag==0){ 26 System.out.print("[System]盾を買った!防御力が上がった!"+easy.getDefense()+"→"); 27 easy.setDefense(easy.getDefense()+100); 28 System.out.println(easy.getDefense()); 29 easy.setMoney(easy.getMoney()-easy.getshieldPrice()); 30 } 31 else if(buyFlag==1){ 32 System.out.print("[System]剣を買った!攻撃力が上がった!"+easy.getStrength()+"→"); 33 easy.setStrength(easy.getStrength()+100); 34 System.out.println(easy.getStrength()); 35 easy.setMoney(easy.getMoney()-easy.getSwordPrice()); 36 } 37 } 38 catch(InputMismatchException e){ 39 System.out.println("買う気がないなら帰れ!"); 40 GameConfig.gameOver(); 41 } 42 } 43 else if(inputDifficulty=="normal"){ 44 double nowMoney=normal.getMoney(); 45 int earnmoney = rdm.nextInt(3000); 46 System.out.println("[System]"+earnmoney+"ギルを拾った!"); 47 normal.setMoney(nowMoney+earnmoney); 48 System.out.println("現在の所持ギル:"+normal.getMoney()); 49 normal.villagerSpeak(); 50 if(normal.getMoney()<normal.getSwordPrice()){ 51 System.out.println("…と思ったが、お前のような貧乏人が来るところではない。"); 52 GameConfig.gameOver(); 53 } 54 try{ 55 int buyFlag = scn.nextInt(2); 56 if(buyFlag==0){ 57 System.out.print("[System]盾を買った!防御力が上がった!"+normal.getDefense()+"→"); 58 normal.setDefense(normal.getDefense()+100); 59 System.out.println(normal.getDefense()); 60 normal.setMoney(normal.getMoney()-normal.getshieldPrice()); 61 } 62 else if(buyFlag==1){ 63 System.out.print("[System]剣を買った!攻撃力が上がった!"+normal.getStrength()+"→"); 64 normal.setStrength(normal.getStrength()+100); 65 System.out.println(normal.getStrength()); 66 normal.setMoney(normal.getMoney()-normal.getSwordPrice()); 67 } 68 } 69 catch(InputMismatchException e){ 70 System.out.println("買う気がないなら帰れ!"); 71 GameConfig.gameOver(); 72 } 73 }else if(inputDifficulty=="hard"){ 74 double nowMoney=hard.getMoney(); 75 int earnmoney = rdm.nextInt(3000); 76 System.out.println("[System]"+earnmoney+"ギルを拾った!"); 77 hard.setMoney(nowMoney+earnmoney); 78 System.out.println("現在の所持ギル:"+hard.getMoney()); 79 hard.villagerSpeak(); 80 if(hard.getMoney()<hard.getSwordPrice()){ 81 System.out.println("…と思ったが、お前のような貧乏人が来るところではない。"); 82 GameConfig.gameOver(); 83 } 84 try{ 85 int buyFlag = scn.nextInt(2); 86 if(buyFlag==0){ 87 System.out.print("[System]盾を買った!防御力が上がった!"+hard.getDefense()+"→"); 88 hard.setDefense(hard.getDefense()+100); 89 System.out.println(hard.getDefense()); 90 hard.setMoney(hard.getMoney()-hard.getshieldPrice()); 91 } 92 else if(buyFlag==1){ 93 System.out.print("[System]剣を買った!攻撃力が上がった!"+hard.getStrength()+"→"); 94 hard.setStrength(hard.getStrength()+100); 95 System.out.println(hard.getStrength()); 96 hard.setMoney(hard.getMoney()-hard.getSwordPrice()); 97 } 98 } 99 catch(InputMismatchException e){ 100 System.out.println("買う気がないなら帰れ!"); 101 GameConfig.gameOver(); 102 } 103 } 104 } 105}

上記コードの

java

1 String inputDifficulty = scn.next(); 2 if(inputDifficulty=="easy"){ 3            ・・・ 4     }

この条件文が動きません。なぜでしょうか…?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Javaでは、==インスタンスの比較になるので、同じ内容の文字列を==で比較しても、条件を満たさないことがよくあります。

"easy".equals(inputDifficulty)あるいはObjects.equals(inputDifficulty, "easy")のように判定してください。

投稿2019/11/05 05:56

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horizon

2019/11/05 06:02

ありがとうございます!==の意味があやふやになっていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問