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

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

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

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

Q&A

解決済

2回答

2238閲覧

条件式に添え字が変数の配列同士を使いたい

tomagurosu

総合スコア37

Java

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

0グッド

0クリップ

投稿2017/04/03 14:34

ヌメロンという3桁の数字を当てるゲームを作っています。

Java

1public class Gamesystem{ 2 public static void main(String[] args){ 3 int[] answer = {5,8,3}; int[] predict = {3,8,6}; //answer配列とpredict配列を生成 4 int bite = 0,eat = 0; 5 for(int a: predict){ 6 if(predict[a] == answer[a]){ //predict配列をまわしてanswer配列に使用されてる数字と位置を重複しているかチェック 7 eat++; 8 for(int b: answer){ 9 if(predict[a] == answer[b]){ //同じくanswer配列をまわして使用されてる数字が重複しているかチェック 10 bite++; 11 } 12 } 13 } 14 } 15 System.out.println(bite+"BITE-"+eat+"EAT"); 16 } 17}

コンパイルは成功したのですが実行時に
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Gamesystem.main(Gamesystem.java:6)
と出て6行目の配列に何か問題がある、ということまでは分かったのですが、6行目に使っている2つの配列のインデックスaは5行目の拡張for文の変数なのでインデックスに問題は無いように思ったのですがどこがおかしくなっているのでしょうか?
使われている数字を当てた数だけ~BITE、さらに桁数も当てると~EATと表示したいです。
なのでこのプログラムでは実行時に「2BITE-1EAT」と表示できればいいのですが・・・・・
回答よろしくお願いします!

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

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

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

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

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

guest

回答2

0

ベストアンサー

拡張for文で回しているのはインデックス番号ではなく要素そのものです。
最初のループでpredictから取り出した数aは3で、長さ3しかなく番号2までしかない配列predictのインデックスにしたらアウトです。predict[3]は存在しないので。

だから拡張forではなく、普通のforでインデックスを使って回すしかありません。

投稿2017/04/03 14:41

swordone

総合スコア20649

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

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

tomagurosu

2017/04/03 15:02

ありがとうございます解決できました!
guest

0

拡張forの解釈が間違っています。

例えば、
for(int a: predict){
の場合、aの中身は0,1,2と繰り返されるのではなく3,8,6と繰り返されます。したがってpredict[3]とかanswer[3]を参照しようとすることになります。

投稿2017/04/03 14:44

HogeAnimalLover

総合スコア4830

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

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

HogeAnimalLover

2017/04/03 14:45

ラグで既に回答されていましたOTL
tomagurosu

2017/04/03 15:02

ありがとうございます解決できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問