-4

この定義をコンパイルしようとしていますが、エラーが発生し続けます。エラーの内容: 1 個のエラーが見つかりました: ファイル: C:\Users\GreatOne\Desktop\Master Folder\04 (j)\04 - Copy\ObjectDemo2\CreateObjectDemo.java [行: 32] エラー: 元を変数に解決できません

/**
 * This class offers a main method to create and use sample Point and Rectangle objects.
 */
public class CreateObjectDemo {
    public static void main(String[] args) {

        // Create a point object and two rectangle objects:
        Point origin_one = new Point(23, 94);
        Rectangle rect_one = new Rectangle(origin_one, 100, 200);
        Rectangle rect_two = new Rectangle(50, 100);

        // Display rect_one's width, height, and area:
        System.out.printf("Width of rect_one: " , rect_one.width);
        System.out.printf("Height of rect_one: " , rect_one.height);
        System.out.printf("Area of rect_one: " , rect_one.area());

        // Set rect_two's position:
        rect_two.origin = origin_one;

        // Display rect_two's position:
        System.out.printf("X Position of rect_two: " , rect_two.origin.x);
        System.out.printf("Y Position of rect_two: " , rect_two.origin.y);

        // Move rect_two and display its new position:
        rect_two.move(40, 72);
        System.out.printf("X Position of rect_two: " , rect_two.origin.x);
        System.out.printf("Y Position of rect_two: " , rect_two.origin.y);
        }

        // A method for moving the rectangle:
        public void move(Point newOrigin) {
           origin = newOrigin;
        }
}

/* 
4

5 に答える 5

0

標準の JavaRectangleクラスには、次のような単純な代入で原点を設定する方法がありません。

origin = newOrigin;

さらに、このmoveメソッドは Java 1.1 以降非推奨になっています。

代わりに、次のようなものが必要になります。

rect_two.setLocation (origin_one);

詳細については、Rectangle のオンライン Java ドキュメントを参照してください。

于 2013-07-03T03:21:00.867 に答える
0

OK、ここでの問題は、クラスのフィールドである必要があるときに、 でoriginローカル変数として宣言されていることです。mainCreateObjectDemo

しかし、本当の問題は、コードのインデントを台無しにしてしまったことです。originそのため、間違ったスコープで宣言されていることを見つけるのがはるかに難しくなりました。

教訓 #1: コードを適切にインデントするのに時間をかけることは報われます。長期的には時間を節約でき、コード レビューでのあざが少なくなります。

教訓 2: コンパイラのメッセージが実際に何を言っているのかを読み、それが何を言っているのかを理解しようとすることには価値があります。この場合、メッセージは問題の内容を明確に示しています。残念ながら、何が間違っていたのかを正確に伝えることはできません。(コンパイラは、あなたが何を書こうとしているのかを理解するのが得意ではありませんコンパイラは、何が有効であるかを示す規則に従い、プログラムがそうでないかどうかを教えてくれます。)

于 2013-07-03T03:37:52.097 に答える