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

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

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

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

Q&A

解決済

1回答

693閲覧

java Hit&blow

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2021/12/14 05:26

import java.util.Scanner; import java.util.Random; public class sampul { public static void main(String[] args) { //ゲーム説明 System.out.print("このゲームは3桁の数字を当てるゲームです"); System.out.println("正解するまでの回数が少なかった方が勝利です"); System.out.println("数字と桁が両方合っていればHit,数字のみならばBlowと表示されます"); System.out.println("先頭が0から始まる場合もあります"); //ランダム生成 int[] array={0,1,2,3,4,5,6,7,8,9}; int[] keta=new int[3]; for(int i=0; i<3; i++) { int answer=(int)(Math.random()*10); keta[i]=array[answer]; System.out.println(answer); String a=String.valueOf(answer); char[] b=a.toCharArray(); } //player1 System.out.println("3桁の数字を予測してください"); Scanner sc=new Scanner(System.in); boolean number=true; while(number==true) { int input=sc.nextInt(); String c=String.valueOf(input); int d=c.length(); char[] e=c.toCharArray(); if(d!=3) { System.out.println("数字は3桁です、再入力してください"); } if(d==3){ break; } } //Hit,Blow機能 int hit=0; int blow=0; if(b==e) { hit++; System.out.println(hit); } }

java初心者です。
質問したいことは//Hit&Blow機能の所がコンパイルするとbとeのシンボルが見つけられませんと表示されることです。私の解釈では//ランダム生成のfor{}と//player1のwhile{}で既に締めているのでその外でbとeを書いても見つからないと解釈しています。
しかし逆にfor }やwhile }を外して一番最後まで持ってくると勿論機能がおかしくなってしまいます。既に}で締めているのをbとeを外側で認識するのにはどうしたらいいのでしょうか?

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

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

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

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

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

jimbe

2021/12/14 09:36

たとえ b と e が見つけられるようになっても b==e は成り立たないと思いますが、それは良いのでしょうか。
退会済みユーザー

退会済みユーザー

2021/12/14 10:47

配列はnullが使えるのですね。ありがとうございます。 とりあえずは数字が3桁しかないので、charで1桁目ならb[0]==e[0];で試そうと考えています。
jimbe

2021/12/14 10:53

b に3桁入っていますか?
退会済みユーザー

退会済みユーザー

2021/12/14 11:10

ランダム生成の所のコードを変えてArrayList,Collections.Shuffleを使ったこーどにしました。それをint answer=list.get(i)と定義しました。それをString型に変換して更にそれをchar[] bに変換しました。確かにbには3桁入っていませんでした。なぜeには3桁入って、bには入らないのでしょうか?
jimbe

2021/12/14 12:25

逆に、なぜ b に 3 桁入ると思っておられるのかが不思議です。 answer には 1 桁しか入らないのに、「それをString型に変換して更にそれをchar[] bに変換」したら 3 桁に増えるでしょうか?
guest

回答1

0

ベストアンサー

冒頭でnullで初期化する。

投稿2021/12/14 05:37

m.ts10806

総合スコア80861

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

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

退会済みユーザー

退会済みユーザー

2021/12/14 07:21

//ランダム生成でb=null; //playerで e=null;としても上手くいきませんでした。調べてchar型はnullを使用出来ないと書いていたので、String型のaとcを同様にnullを使用したのですが、上手くいきませんでした。 nullの正しいコードを教えて頂けないでしょうか?
Luice

2021/12/14 07:29

「冒頭で」って書いてあるけど… nullで初期化出来ないのはchar型であって、charの配列であるchar[]はnullで初期化可能ですよ。
m.ts10806

2021/12/14 08:04

「冒頭」だけで分かりにくいなら「メソッドの冒頭で」ならわかりますか? char[] e= null; のように初期化。 ループの中などで型をつけてるところは調整 char[] e=c.toCharArray(); ↓ e=c.toCharArray();
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問