###前提・実現したいこと
”無理をして”、可変長引数に1つの配列を渡そうとしていますが、オブジェクト配列からのキャスト戻しができません。
###発生している問題・エラーメッセージ
Main.java:44: error: incompatible types: Object[] cannot be converted to int[] if(obj instanceof int[]){ ^ Main.java:45: error: incompatible types: Object[] cannot be converted to int[] int[] d = (int[]) obj; ^ 2 errors
###該当のソースコード
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(); } Object objs = (Object) d; dices[i] = new Dice((Object) objs); } boolean ans = true; for(int i = 0; ans && i < n; i++){ for(int j = i + 1; j < n; j++){ if(dices[i].equals(dices[j])){ ans = false; break; } } } System.out.println(ans? "Yes" : "No"); } } 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(Object... obj){ // コンストラクタ for(int i = 0; i < 6; i++){ if(obj instanceof int[]){ int[] d = (int[]) obj; _d[i] = d[i]; } } } public int[] showAll(){ return _d; } @Override public boolean equals(Object obj){ boolean result = false; Dice dice = (Dice) obj; for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ if(Arrays.equals(showAll(), dice.showAll())){ result = true; break; } dice.rollEast(); } for(int j = 0; j < 4; j++){ if(Arrays.equals(showAll(), dice.showAll())){ result = true; break; } dice.rollNorth(); } if(Arrays.equals(showAll(), dice.showAll())){ result = true; break; } dice.rollRight(); } return result; } 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; } }
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。