長方形を作成するプログラムを作成しているのですが、作成した長方形を入力された数字分だけ移動するメソッドでobject型とプリミティブ型を変換しないとarraylistが使えないことが作成途中でわかり型変換を導入したのですがうまくいきません。
下のプログラムはmainをもつクラスからcreateやmoveを指定されたら呼び出されるようにしています。
java
1import java.util.ArrayList; 2 3class Command{ 4 static ArrayList<Rectangle> a = new ArrayList<Rectangle>(); 5 java.util.Scanner scan = new java.util.Scanner(System.in); 6 7 static void create(){ 8 Rectangle tem = new Rectangle(); 9 java.util.Scanner scan = new java.util.Scanner(System.in); 10 System.out.println("縦:"); 11 tem.height = scan.nextDouble(); 12 System.out.println("幅:"); 13 tem.width = scan.nextDouble(); 14 System.out.println("座標X:"); 15 tem.X = scan.nextDouble(); 16 System.out.println("座標Y:"); 17 tem.Y = scan.nextDouble(); 18 System.out.println("色"); 19 tem.color = scan.next(); 20 a.add(tem); 21 } 22 static void move(){ 23 java.util.Scanner scan = new java.util.Scanner(System.in); 24 System.out.println("何番目の長方形?"); 25 //指定した長方形のx,y座標のindexをyousoに 26 int youso = scan.nextInt(); 27 int yousoX = 5*youso - 3; 28 int yousoY = 5*youso - 2; 29 30 //移動したい距離+元の座標の位置をmX,mYに 31 System.out.println("X方向の距離:"); 32 int x1 = scan.nextInt(); 33 Rectangle rx = a.get(yousoX); 34 String rxStr = rx.toString(); 35 double numx = new Double(rxStr); 36 double mX = x1 + numx; 37 38 System.out.println("Y方向の距離:"); 39 int y1 = scan.nextInt(); 40 Rectangle ry = a.get(yousoY); 41 String ryStr = ry.toString(); 42 double numy = new Double(ryStr); 43 double mY = y1 + numy; 44 45 Double dblx = mX; 46 Rectangle rxX = dblx; 47 Double dbly = mY; 48 Rectangle rY = dbly; 49 //指定した長方形の座標の要素に移動した座標を上書き 50 a.set(yousoX, rX); 51 a.set(yousoY, rY); 52 } 53
createで作成した長方形をarraylistのaに格納しているのでrectangle型で要素を取り出しdouble型に移動した距離を足し合わせた結果を入れ、arraylistのaに入れるためにまたrectangle型に直しているのですがdouble型からrectangle型にすると「変換できません」とエラーが出てしまいます。
あとこのプログラムは自分でも回りくどいものだと思うのでよろしければもっとスマートに改良する方法をおしえてください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。