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

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

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

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Q&A

解決済

1回答

2059閲覧

java if文のデバッグの指導をお願いします。

Rikuto_

総合スコア2

Java

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

0グッド

1クリップ

投稿2020/09/23 18:00

編集2020/09/25 03:31

java歴1ヶ月未満で下手くそなコードだと思います。

下のコードを実行した際、
まず「new Taipingのコンストラクタが出力されない」こと、
「ゲームの難易度を「簡単」または「難しい」とコンソールで入力してもelse文のコードが出力されてしまう」こと、
「正しく入力してもelse文の不正解!が出力される上、同じ単語の無限ループになってしまう」ことの解決方法のご教授をお願いします。

上のうち一つだけでも教えて頂けると嬉しいです。

Java

1 2public class Main { 3 public static void main( String[] args){ 4 double random = Math.random() * 5 + 1; 5 int number = (int)random; 6 //乱数を持つフィールドの定義 7 Taiping taiping = new Taiping("英単語タイピングゲーム","【簡単】または【難しい】を入力してください"); 8 //難易度の選択の入力 9 System.out.println("英単語タイピングゲーム"); 10 System.out.print("【簡単】または【難しい】を入力してください : "); 11 taiping.start( number ); 12 } 13} 14 import java.util.Scanner; 15public class Taiping { 16Scanner scanner = new Scanner( System.in); 17 18 String name; 19 String level; 20 Taiping( String name, String level ){ 21 this.name = name; 22 this.level = level; 23 } 24 //コンストラクタ 25 26 String cheese = "チーズ :"; 27 String dog = "犬 :"; 28 String cat = "猫 :"; 29 String yesterday= "昨日 :"; 30 String moon = "月 :"; 31 //タイピングの単語 32 public void start( int number ){ 33 for( int s = 1; s <= 5; s++ ){ 34 String levels = scanner.next(); 35 if( levels == "簡単" || levels == "難しい" ){ 36 s = 25; 37 } else { 38 s = 1; 39 System.out.print("【簡単】または【難しい】を入力してください : "); 40 } 41 } 42 int i = 1; 43 while( i <= 5){ 44 System.out.println( number );//5〜1の乱数の出力 45 switch( number ){ 46 case 1: 47 System.out.println( this.cheese ); 48 String cheese0 = scanner.next(); 49 if( cheese0 == "cheese"){ 50 System.out.println("正解!"); 51 } else { 52 System.out.println("不正解!"); 53 } 54 break; 55 case 2: 56 System.out.println( this.dog ); 57 String dog0 = scanner.next(); 58 if( dog0 == "dog"){ 59 System.out.println("正解!"); 60 } else { 61 System.out.println("不正解!"); 62 } 63 break; 64 case 3: 65 System.out.println( this.cat ); 66 String cat0 = scanner.next(); 67 if( cat0 == "cat"){ 68 System.out.println("正解!"); 69 } else { 70 System.out.println("不正解!"); 71 } 72 break; 73 case 4: 74 System.out.println( this.yesterday ); 75 String yesterday0 = scanner.next(); 76 if( yesterday0 == "yesterday"){ 77 System.out.println("正解!"); 78 } else { 79 System.out.println("不正解!"); 80 } 81 break; 82 case 5: 83 System.out.println( this.moon); 84 String moon0 = scanner.next(); 85 if( moon0 == "moon"){ 86 System.out.println("正解!"); 87 } else { 88 System.out.println("不正解!"); 89 } 90 break; 91 default: 92 System.out.println("いやん"); 93 } 94 i++; 95 } 96 } 97}

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

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

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

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

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

javahack

2020/09/23 18:43

コピーに失敗したのかもしれませんが、提示のコードではコンパイルが通りません。 質問は編集できますのでコンパイルが通るコードを提示してください。
m.ts10806

2020/09/24 00:10

「デバッグの指導」とは何の意図があってつけたタイトルなのでしょうか。 質問本文にはデバッグの話は一切触れられていません。丸投げしてるだけです。
m.ts10806

2020/09/24 08:05

コードブロックにはコードだけを記載してください。1クリックでブロック内がコピーされるので、コード以外があると邪魔になります。
Rikuto_

2020/09/24 12:16

m.tsさん言い方はうざいですがありがとうございます。
m.ts10806

2020/09/24 13:25

ウザいも何も、質問内容を見たら当然の反応かと思いますが。
Rikuto_

2020/09/24 14:38

言い方がきついということです。 私がテラテイルやプログラミング歴が長いならわかりますが、初学者に対する接し方として適切ではありません。 それがわからないのは友人関係もおおよそ想像できます。
m.ts10806

2020/09/24 14:58

>友人関係もおおよそ想像できます。 本件と関係あるのでしょうか。 単なる思い込みによる個人攻撃なら通報します。 >初学者に対する接し方として適切ではありません。 淡々としているだけで、勝手にそちらがそう受け取られてるだけかと思います。 何も事情を知らない他人が見たらどう思うかくらいは技術レベルや歴は関係ないですよ。一般的な配慮の範疇です。
Rikuto_

2020/09/24 15:26

色々な方法を模索した上で質問しています。 それを丸投げしてるだけと言うのはかなり印象悪いです。 ただ、私は「デバッグの指導」をバグ修正という目的に向かって教え導いてもらうこと(一応wikiから引用してます)と思っていますが、 間違っているなら丸投げという発言も納得し謝罪します。
javahack

2020/09/24 19:21

”初学者”であってもサイトのルールに反していたり間違いがあれば、指摘され修正を求められます。ただ、それだけです。 初学者だから優遇しろ、優しくしろと言うのは正直甘えだと思います。 ちやほやされたかったら、有料サイトを利用した方が良いかもしれません。 お金を払った分は優しく懇切丁寧に教えてくれるでしょう。
Rikuto_

2020/09/25 01:00

初学者関係なく エラーに苦しんだ上質問して「丸投げしただけ」と言われ良い気持ちになる人なんていないと思います。 「デバッグの指導」についての返答がないのはどういう意図でしょうか。 私の解釈が間違っていれば謝罪すると明言していますが。 これまでの会話で私がちやほやされたいと思っていると感じてしまうのも あなたの感性が一般の人々と乖離していますね。
m.ts10806

2020/09/25 01:14

文句があるなら運営にいってください。 https://teratail.com/help/avoid-asking >コードをください・デバッグしてください等の丸投げの質問 >何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 >問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。 >まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。 他人には質問に書いてあることが全てです。 やりたいことは書いてあっても、調べたこと、試したこと 何も書いてません。 これで丸投げと思わない方が無理があります。 いずれにしても「デバッグの指導をしてほしい」とタイトルに書きながら自身でデバッグした形跡がなければ誰が見ても丸投げですよ。 「デバッグを指導してほしい」ではなく「デバッグしてほしい」という作業依頼になっています。解釈は大いに間違っています。 「デバッグの仕方を教えてほしい」なら分かります。でも、質問内容はそうなっていません。 第三者になったつもりで質問を読みなおしてみると良いでしょう。 ・質問になっているか、読みやすいか・要件以外に余計な文言はないか  (初学者云々は不要。「初心者アイコン」を質問につければ十分) ・コードは読みやすく提示されているか(コピペで再現可能か) ・起きている問題に対し自身が取り組んだことは明示されているか 確か、質問投稿時にチェックリストのようなものがあったかと思いますが、それらはきちんと見たのでしょうか。 「質問する前に確認していただきたいこと」という画面も出るはずです。 それらを全て無視して「俺が書きたいように書いた」だと「お客様扱いしてほしいのね」と理解されても仕方がないことです。
Rikuto_

2020/09/25 02:25

運営に対する文句なんてありませんが。 エラーと表示されず思うように動作しないことに数時間かけて自分で調べながら対処しようとしました。 「具体的なところで生まれる」の「具体的」とはあなたの基準です。今の私の知識は質問したバグの原因さえ全く検討がつかないといった段階であり、私にとっては具体的なところで生まれたものです。 そのため質問に「解決方法のご教授」と記述しています。たんに答えを教えてほしいと言っているのではありません。 解決方法を教えてもらうことはデバッグの指導の範疇に収まらないのでしょうか? 質問の仕方の調べが足りず、質問内容に欠落した部分があるという非は認めます。次に質問を投稿する際は正しく記述できるよう努力します。 最後に。それを「お客様扱いしてほしいのね」と理解するのは飛躍し過ぎです。それは単なる思い込みです。
m.ts10806

2020/09/25 02:34 編集

運営のガイドラインに「問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。」とあって、「実際に行った調査や作業に取り組み」が一切書かれていないことを指摘しているのに終始そこを無視されるので「文句があるなら私ではなく運営に」という意味で書きました。 あとはおおよそ理解されていないようですし繰り返すのは面倒なので、反論したいのでしたらきちんと読んで理解してから反論してください。
Rikuto_

2020/09/25 03:18

ガイドラインの引用だったんですね。>これが引用を指すのは知りませんでした。失礼しました。 「実際に行った調査や作業」については ・「数時間かけて自分で調べながら対処」 ・「今の私の知識は質問したバグの原因さえ全く検討がつかない」 つまり質問する前はどうコードを変えたらいいか検討もつかず訳わからないという状態でした。 その上で「欠落した部分があるという非は認めます」と述べています。これは「実際に行った調査や作業」の記述をしていないところを言っています。 他の話は理解できないと思うのでもう終わりでいいです。
m.ts10806

2020/09/25 03:21

なるほど。いつ来るかわからない次の機会を楽しみにしておきましょう。 ただ、せめて、「文章」と「コード」くらいは別にしてもらえませんか? この質問は削除されない限り半永久的に残り続けるので、後から見る人が読みにくいのは非常によろしくないです。
Rikuto_

2020/09/25 03:36

すみません先日指摘されてすぐ直したつもりでしたが変更内容に記述が抜けていて更新できていませんでした。 今直しました。 「いつ来るかわからない次に機会を楽しみにしておきましょう」 とありますが、煽っていると捉えていいのですよね。 私は当分質問する側なので、あなたは回答に来ないでください。
guest

回答1

0

ベストアンサー

Stringの内容の比較は==ではできません。
equalsメソッドを使ってください。

foo.equals(bar)
で、fooとbar二つのStringの値を比較できます。

投稿2020/09/23 18:53

amiya

総合スコア1218

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

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

deaf_tadashi

2020/09/23 22:57 編集

foo.equals(bar)はnull時の考慮がどうのこうので論争になるので、Java7以降ならObjects.equals(foo, bar)の方が安心です。
A-pZ

2020/09/24 04:36

+1
Rikuto_

2020/09/24 07:44

ありがとうございます!! 無事きちんと動作しました????‍♂️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問