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

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

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

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

解決済

JAVAの配列がよくわかりません

ain4425
ain4425

総合スコア19

Java

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

1回答

0リアクション

0クリップ

2326閲覧

投稿2016/07/21 16:57

3桁の数字を入力して、数も場所もあっている(ヒット)のは何個で、数だけあっている(ブロー)は何個かを随時教えてくれるプログラムを書いています。
正解の数字は乱数で出しています。また、何回もできるようにループさせています。
答え合わせのしやすいように、初めに正解の数字は表示させています。
解答者が入力した数字をi[a]という配列(?)に代入したところくらいからよくわからなくなってしまいました。
現在何を入力しても0個と0個が表示されてしまいます。
java初心者のため、どこがどう違うのか分かりやすく教えていただけると幸いです。

java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static void main(String[] args) { int[] answerNumList = new int[3]; System.out.println("3桁の数字を当ててください"); System.out.println("3桁の数字は重複しません"); System.out.println("0から始まる数字も可能です(例 012)"); System.out.println("数字と場所が合っている場合はヒット、数字だけが合っていたらブローとしてその数が表示されます"); System.out.print("正解 "); //0~9が入ったList を生成 ArrayList<Integer> tempNumList = new ArrayList<Integer>(); for(int i = 0; i < 10; i++){ tempNumList.add(i); } //Listからランダムに数字を取り出して3桁の数を生成 for(int i = 0; i <answerNumList.length; i++){ int selectNum = (int)(Math.random() * tempNumList.size()); answerNumList[i] = tempNumList.remove(selectNum); } for(int i=0; i < answerNumList.length; i++){ System.out.print(answerNumList[i]); if(i != answerNumList.length -1) System.out.print( " "); } //入力後のステップ while(true){ try{ System.out.println(); System.out.println("3桁の数字を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int a[]=new int[num]; //エラーの初期化、エラーをfalseにしておく boolean error = false; int length = str.length(); //3桁でない数が入力されたときエラーをtrueにする if (length != 3) error = true; //同じ数が入力されたときエラーをtrueにする for(int i = 0 ; i < length; i++) { for(int j =i +1; j < length; j++) { if(str.charAt(i) == str.charAt(j)) error = true; } } //エラーの時の画面表示 if(error == true){ System.out.println("入力エラーです。"); System.out.println("0~9までの数値を3桁で重複しないように入力してください。"); } if(error == false){ //hitの初期化 int hit = 0; for(int i = 0; i < answerNumList.length; i++) { if ( a[i] == answerNumList[i]) { hit++; } } //blowの初期化 int blow = 0; for(int i = 0; i < 3; i++) { for(int j = 0; j <answerNumList.length; j++) { if( a[i] == answerNumList[j]) { blow++; } } } if(hit == answerNumList.length) { System.out.println("正解です."); } else { System.out.println("ヒット" + hit + "個," + "ブロー" + (blow - hit)+ "個"); } } } catch(IOException e){ e.printStackTrace(); } } } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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