1

私はいくつかのクラスを持つJavaのプログラムを持っています。これらは次のとおりです。

i)形状ii)正方形iii)長方形iv)円v)三角形vi)描画キャンバスvii)アプリケーション

Square、Rectangle、Circle、TriangleはすべてShapeクラスから継承します

ここで、Drawing Canvasクラスには、Shapeタイプのオブジェクトをファイルに書き込むためのメソッドと、ファイルからオブジェクトを読み取るためのメソッドの2つがあります。

これはコードです:

ファイルに保存する方法は完全に機能します。ただし、ファイルからオブジェクトを読み取り、ShapesArrayListに追加する際に問題が発生します。

現状では、 java.lang.Stringをshapes_assignment.Shapeにキャストできないというエラーがアプリケーションに表示されます。

テキストファイルに保存されているテキストを読み取り、それを使用してオブジェクトをもう一度再作成するにはどうすればよいですか?ありがとう :)

4

3 に答える 3

2

入力文字列を受け取り、それから形状を作成するリーダーを作成する必要があります。Java Date クラスを使用して、これがどのように機能するかを示す簡単な例を次に示します。Shape コンストラクターがないため、Shape を作成できません。

Date today=new Date();
long var_to_write=today.getTime();

//Save this in to a file, then read it out as long var_in_file

Date previousTime=new Date(var_in_file);
于 2012-11-16T16:44:30.080 に答える
0

ArrayListに文字列を追加しています。

            while(input.hasNext())
            {
                temp.add(input.next());
            }

            Shapes.add((Shape)temp.get(i));

ここでは、文字列(temp.get(i)は文字列を返します)をShapeタイプにキャストしようとしてますこれにより、ClassCaseExceptionが発生します。

ファイルから読み取り、ArrayList(temp)にShapeインスタンスを入力した後、Shapeインスタンスを作成します。

      List<Shape> temp = new ArrayList<Shape>();
      //read from the scanner and make an Shape object. 
       Shape shape = new Shape(your arguments to the Shape cons);
       now, while adding into shapes you wont need a case, as you made yourself sure that your ArrayList would only accept Shape

       shapes(temp.get(i));
于 2012-11-16T16:48:35.127 に答える
0

を使用しObjectOutputStreamて形状のリストを記述し、 からそれらを取得する必要がありObjectInputStreamます。

out.writeObject(Shapes);

Shapes = (ArrayList)in.readObject();

であると仮定しShapesますArrayList

于 2012-11-16T17:02:32.557 に答える