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

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

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

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

Q&A

解決済

1回答

3447閲覧

Javaの数あてゲームがうまくできません

ain4425

総合スコア19

Java

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

0グッド

0クリップ

投稿2016/07/03 15:15

編集2016/07/03 15:21

###前提・実現したいこと
3桁の数を打ち込んで、それぞれの桁目が正解か不正解か、大きいのか小さいのかを判定してくれるプログラムを作ろうと思っています。宜しくお願いします

###発生している問題・エラーメッセージ
どんな数字を打っても「小さいです」が表示されてしまいます。

###該当のソースコード

Java

1ここにご自身が実行したソースコードを書いてください
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { System.out.println("3つの1から9の数値を当てるゲームです"); System.out.println("数字を入力してください"); int[] randomNum = new int [3]; for(int i=0 ; i < randomNum.length ; i++){ randomNum[i] = (int)(Math.random()*9) + 1; } boolean [] hit = { false, false, false}; BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); try{ while ( !hit[1] || !hit[2] || !hit[3]){ String str =br.readLine(); String[] intlist =str.split(""); int[] ans =new int[3]; for(int j =0 ; j < 3; j++) { Integer.parseInt(intlist[j]); System.out.println(j +"文字目"); if (randomNum[j] > ans [j]) { System.out.println("小さいです"); } else if(randomNum[j] < ans [j]) { System.out.println("大きいです"); } else if(randomNum[j] == ans [j]) { System.out.println("正解!"); hit[j] = true; } } } System.out.println("すべて正解!"); }catch(IOException e){ System.out.println( e); } } }

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

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

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

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

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

kei344

2016/07/03 15:16

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
ain4425

2016/07/03 15:22

ありがとうございます。ブロックで囲まれていますでしょうか。当方初心者のため、申し訳ありません、、
kei344

2016/07/03 15:25

いえいえ、「ここにご自身が」から「ここに言語を入力」までを消せば完璧です。
guest

回答1

0

ベストアンサー

入力された数字をparseIntで変換したあと、どこにも保持していません。おそらくans[]に置いてるつもりなのでしょうが置かれていないため、ansは[0, 0, 0]のまま変わりません。比較対象の数字が1以上なのに対し常に0と比較しているため、常に「小さいです」が表示されてしまいます。

投稿2016/07/03 15:23

swordone

総合スコア20649

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

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

ain4425

2016/07/03 15:31

int ans = のところを書き換えれば良いということでしょうか? new int[3]が誤りということですか?
swordone

2016/07/03 15:36

Integer.parseInt(intlist[j])で得た数値と正解の数値を比較したいはずですよね?ならばこれの結果をans[j]に入れないと比較できません。
ain4425

2016/07/03 15:49

そうだったのですか、分からないところが分かりました! ans[j] = intlist[j] の行を入れればいいということですか? ちょっとうまくいかないのでご教授いただけると幸いです
tomoare

2016/07/03 16:00

ans は int 型なので、数値に変換したものを代入しないといけないですよー
ain4425

2016/07/03 16:09

打ったものを数値に変換する手順がよくわかりません(泣) 何度もごめんなさい、どのように表記すればいいのでしょうか
swordone

2016/07/03 16:15

ご自分で数値に変換してるじゃないですか >Integer.parseInt(intlist[j]) この結果をans[j]に入れればいいだけです。つまり ans[j] = Integer.parseInt(intlist[j]);
tomoare

2016/07/03 16:15

ans[j] = Integer.parseInt(intlist[j]); こんな感じかな
tomoare

2016/07/03 16:16

かぶっちゃいました
ain4425

2016/07/03 16:27

そのInteger・・・の行を右辺にそのまま代入していいということですか! swordoneさん、YukiOkazakiさん丁寧なご説明ありがとうございました。
swordone

2016/07/03 16:32

「メソッドの返り値」の意味を知って欲しいです。 void以外のメソッドはその実行結果を実行した場所に返します。 返ってきたその値を変数に入れるなどして使うことができます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問