###前提・実現したいこと
サイコロが同じかどうかをチェックするプログラムです。
サイコロがn個与えられ、サイコロ各面に任意の数字が割り振られます。
サイコロDiceは_d[6]を持ち、サイコロはn個なのでDice[n]とクラス型配列にします。
1つ目
Dice[i]._d[j] = d[j];
これができません。サイコロのフィールド配列_dにアクセスしたいです。
2つ目
flag = checkSameDice(Dice[j], Dice[j - 1]);
こちらもシンボルが見つかりません。
各サイコロを同じかどうか判定して同じものがある場合、Noと表示、
すべて異なる場合Yesと表示します
###発生している問題・エラーメッセージ
Main.java:16: error: cannot find symbol Dice[i]._d[j] = d[j]; ^ symbol: variable Dice location: class Main Main.java:22: error: cannot find symbol flag = checkSameDice(Dice[j], Dice[j - 1]); ^ symbol: variable Dice location: class Main Main.java:22: error: cannot find symbol flag = checkSameDice(Dice[j], Dice[j - 1]); ^ symbol: variable Dice location: class Main 3 errors
###該当のソースコード
java
1import java.util.*; 2 3public class Main{ 4 private static final Scanner scan = new Scanner(System.in); 5 static boolean flag = false; 6 7 public static void main(String[] args){ 8 9 int n = scan.nextInt(); 10 int[] d = new int[6]; 11 Dice[] dices = new Dice[n]; 12 13 for(int i = 0; i < n; i++){ 14 for(int j = 0; j < 6; j++){ 15 d[j] = scan.nextInt(); 16 Dice[i]._d[j] = d[j]; 17 } 18 } 19 20 for(int i = 0; i < n - 1; i++){ 21 for(int j = n - 1; j > i; j--){ 22 flag = checkSameDice(Dice[j], Dice[j - 1]); 23 if(flag == true)break; 24 } 25 if(flag == true)break; 26 } 27 System.out.println(flag? "No" : "Yes"); 28 } 29 30 public static boolean checkSameDice(Dice diceA, Dice diceB){ 31 flag = false; 32 for(int i = 0; i < 4; i++){ 33 for(int j = 0; j < 4; j++){ 34 flag = Arrays.equals(diceA._d, diceB._d); 35 if(flag == true)break; 36 diceB.rollEast(); 37 } 38 for(int j = 0; j < 4; j++){ 39 flag = Arrays.equals(diceA._d, diceB._d); 40 if(flag == true)break; 41 diceB.rollSouth(); 42 } 43 flag = Arrays.equals(diceA._d, diceB._d); 44 if(flag == true)break; 45 diceB.rollRight(); 46 } 47 return flag; 48 } 49} 50 51class Dice{ 52 53 int[] _d = new int[6]; 54 public static final int 55 TOP = 0, SOUTH = 1, EAST = 2, 56 WEST = 3, NORTH = 4, BOTTOM = 5; // 定数 57 58 public Dice(int[] d){ // コンストラクタ 59 for(int i = 0; i < 6; i++){ 60 _d[i] = d[i]; 61 } 62 } 63 64 public void rollSouth(){ 65 int tmp = _d[TOP]; 66 _d[TOP] = _d[NORTH]; 67 _d[NORTH] = _d[BOTTOM]; 68 _d[BOTTOM] = _d[SOUTH]; 69 _d[SOUTH] = tmp; 70 } 71 72 public void rollNorth(){ 73 int tmp = _d[TOP]; 74 _d[TOP] = _d[SOUTH]; 75 _d[SOUTH] = _d[BOTTOM]; 76 _d[BOTTOM] = _d[NORTH]; 77 _d[NORTH] = tmp; 78 } 79 80 public void rollEast(){ 81 int tmp = _d[TOP]; 82 _d[TOP] = _d[WEST]; 83 _d[WEST] = _d[BOTTOM]; 84 _d[BOTTOM] = _d[EAST]; 85 _d[EAST] = tmp; 86 } 87 88 public void rollWest(){ 89 int tmp = _d[TOP]; 90 _d[TOP] = _d[EAST]; 91 _d[EAST] = _d[BOTTOM]; 92 _d[BOTTOM] = _d[WEST]; 93 _d[WEST] = tmp; 94 } 95 96 public void rollRight(){ 97 int tmp = _d[SOUTH]; 98 _d[SOUTH] = _d[WEST]; 99 _d[WEST] = _d[NORTH]; 100 _d[NORTH] = _d[EAST]; 101 _d[EAST] = tmp; 102 } 103}
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
'''java
import java.util.*;
public class Main{
private static final Scanner scan = new Scanner(System.in);
static boolean flag = false;
public static void main(String[] args){ int n = scan.nextInt(); int[] d = new int[6]; Dice[] dices = new Dice[n]; for(int i = 0; i < n; i++){ for(int j = 0; j < 6; j++){ d[j] = scan.nextInt(); } dices[i] = new Dice(d); } for(int i = 0; i < n - 1; i++){ for(int j = n - 1; j > i; j--){ flag = checkSameDice(dices[j], dices[j - 1]); if(flag == true)break; } if(flag == true)break; } System.out.println(flag? "No" : "Yes"); } public static boolean checkSameDice(Dice diceA, Dice diceB){ flag = false; for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ flag = Arrays.equals(diceA._d, diceB._d); if(flag == true)break; diceB.rollEast(); } for(int j = 0; j < 4; j++){ flag = Arrays.equals(diceA._d, diceB._d); if(flag == true)break; diceB.rollSouth(); } flag = Arrays.equals(diceA._d, diceB._d); if(flag == true)break; diceB.rollRight(); } return flag; }
}
class Dice{
int[] _d = new int[6]; public static final int TOP = 0, SOUTH = 1, EAST = 2, WEST = 3, NORTH = 4, BOTTOM = 5; // 定数 public Dice(int[] d){ // コンストラクタ for(int i = 0; i < 6; i++){ _d[i] = d[i]; } } public void rollSouth(){ int tmp = _d[TOP]; _d[TOP] = _d[NORTH]; _d[NORTH] = _d[BOTTOM]; _d[BOTTOM] = _d[SOUTH]; _d[SOUTH] = tmp; } public void rollNorth(){ int tmp = _d[TOP]; _d[TOP] = _d[SOUTH]; _d[SOUTH] = _d[BOTTOM]; _d[BOTTOM] = _d[NORTH]; _d[NORTH] = tmp; } public void rollEast(){ int tmp = _d[TOP]; _d[TOP] = _d[WEST]; _d[WEST] = _d[BOTTOM]; _d[BOTTOM] = _d[EAST]; _d[EAST] = tmp; } public void rollWest(){ int tmp = _d[TOP]; _d[TOP] = _d[EAST]; _d[EAST] = _d[BOTTOM]; _d[BOTTOM] = _d[WEST]; _d[WEST] = tmp; } public void rollRight(){ int tmp = _d[SOUTH]; _d[SOUTH] = _d[WEST]; _d[WEST] = _d[NORTH]; _d[NORTH] = _d[EAST]; _d[EAST] = tmp; }
}
'''
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/13 04:58
2016/11/13 05:01
退会済みユーザー
2016/11/13 05:15
退会済みユーザー
2016/11/13 05:18
2016/11/13 05:21