前提・実現したいこと
Javaでスロットのようなシステムを開発しています。
Javaを勉強し始め、1か月です。
本題ですが、以下のようなコードを書きました。
配列で3*3でそれぞれランダムで1~9の数値を持ってくるのですが、列ごとに数値が被らないようにチェックするように組みました。
ですが、実行するとたまに表示されず実行が停止します。
どこかでループが抜け出せなくなっているのかと考えましたが、私の頭ではわかりませんでした。
発生している問題・エラーメッセージ
メッセージがありません。 実行をすると何も表示されずにいます。おそらく無限ループ中だと思います。
エラーメッセージ
該当のソースコード
Java
1import java.util.Random; 2 3public class Test{ 4 public static void main(String[] args){ 5 Random rand = new Random(); 6 int [][]array; 7 array = new int[3][3]; 8 array[0][0] = rand.nextInt(9)+1; 9 array[0][1] = rand.nextInt(9)+1; 10 array[0][2] = rand.nextInt(9)+1; 11 array[1][0] = rand.nextInt(9)+1; 12 array[1][1] = rand.nextInt(9)+1; 13 array[1][2] = rand.nextInt(9)+1; 14 array[2][0] = rand.nextInt(9)+1; 15 array[2][1] = rand.nextInt(9)+1; 16 array[2][2] = rand.nextInt(9)+1; 17 18 //チェック 19 while(true){ 20 if(array[0][0] == array[1][0]){ 21 array[1][0] = rand.nextInt(9); 22 } 23 24 if(array[0][0] == array[2][0]){ 25 array[2][0] = rand.nextInt(9)+1; 26 }else if(array[1][0] == array[2][0]){ 27 array[2][0] = rand.nextInt(9)+1; 28 }else{ 29 break; 30 } 31 32 } 33 //チェック2列目 34 while(true){ 35 if(array[0][1] == array[1][1]){ 36 array[1][1] = rand.nextInt(9); 37 } 38 39 if(array[0][1] == array[2][1]){ 40 array[2][1] = rand.nextInt(9)+1; 41 }else if(array[1][1] == array[2][1]){ 42 array[2][1] = rand.nextInt(9)+1; 43 }else{ 44 break; 45 } 46 47 } 48 //チェック3列目 49 while(true){ 50 if(array[0][2] == array[1][2]){ 51 array[1][2] = rand.nextInt(9); 52 } 53 54 if(array[0][2] == array[2][2]){ 55 array[2][1] = rand.nextInt(9)+1; 56 }else if(array[1][2] == array[2][2]){ 57 array[2][2] = rand.nextInt(9)+1; 58 }else{ 59 break; 60 } 61 62 } 63 64 } 65 System.out.println((array[0][0])+" "+(array[0][1])+" "+(array[0][2])); 66 System.out.println((array[1][0])+" "+(array[1][1])+" "+(array[1][2])); 67 System.out.println((array[2][0])+" "+(array[2][1])+" "+(array[2][2])); 68 69 } 70
試したこと
while文の内容をすべて書き換えて別の方法でチェックする方法を模索しましたが、私の知力では無理でした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/24 03:59
2018/04/24 12:14