2009-12-01 5 views
0

2 포인트를 정의하는 클래스를 만들기위한 과제가 주어졌습니다. 그런 다음 벡터를 정의하는 클래스를 만듭니다. 그런 다음 사각형 (4 벡터)을 정의하는 클래스를 만듭니다. 이 과제를하기 전에 나는 벡터의 길이를 계산하기위한 점과 벡터 클래스를 만드는 작업을했습니다. 나는이 직사각형 클래스를 만들 수 있도록 그 코드를 사용할 수 있다는 것을 알기 위해 그 과제에 100 % 표시를했습니다.자바에서 벡터와 점으로 사각형 만들기?

이 현재 할당에서 직사각형 클래스를 생성 한 다음 경계 및 면적을 계산합니다. 나는 사각형 클래스를 만드는 동안 시간을 ​​보냈지 만, 완벽 해 보일 때마다 컴파일 오류가 발생합니다.

Point 클래스 :

public class Point { 

private double x; 
private double y; 

public Point(){ 
x=0.0; 
y=0.0; 
} 
public Point(double a, double b){ 
x=a; 
y=b; 
} 
public double getX(){return x;} 
public double getY(){return y;} 
} 

Vector 클래스 :

public class Vector { 

private Point p = new Point(); 
private Point q = new Point(); 


public Vector(Point a, Point b){ 
p=a; 
q=b; 
} 
public double giveLength (){ 
double xDiff=q.getX() - p.getX(); 
double yDiff=q.getY() - p.getY(); 
return Math.sqrt((xDiff*xDiff)+(yDiff*yDiff)); 
} 

public double giveLength2(){ 
double x2Diff = p.getX2() - q.getX2(); 
double y2Diff = p.getY2() - q.getY2(); 
return Math.sqrt((x2Diff*x2Diff)+(y2Diff*y2Diff)); 
} 
} 

Assignment7 클래스 :

어쨌든이 사각형 클래스의 도와 사용하는 메신저 내 이전 코드

import java.util.*; 
import java.math.*; 
import java.io.*; 

class Assignment7 { 
public static void main(String[] args)throws Exception{ 

double X1; 
double Y1; 
double X2; 
double Y2; 

Point P1; 
Point P2; 
Vector V; 

Scanner in = new Scanner(System.in); 
System.out.println("Please enter a filename:"); 
String filename = in.nextLine(); 

File inputFile = new File(filename); 
Scanner reader = new Scanner(inputFile);  


while (reader.hasNext()){ 

X1 = reader.nextDouble(); 
Y1 = reader.nextDouble(); 
P1 = new Point(X1,Y1); 


X2 = reader.nextDouble(); 
Y2 = reader.nextDouble(); 
P2 = new Point(X2,Y2); 


V = new Vector (P1, P2); 

System.out.println("X1 " + X1 + " length is " + V.giveLength()); 

} 
} 
} 

입력 파일은 형식에 :

다음
x y 
x y 
x y 

내 현재 사각형 클래스처럼 보이지만, 그것의 생성자 오류를 많이 던지고 것입니다.

class Rectangle{ 

private Vector w = new Vector(); 
private Vector x = new Vector(); 
private Vector y = new Vector(); 
private Vector z = new Vector(); 

public Rectangle(Vector a, Vector b, Vector c, Vector d){ 
w=a; 
x=b; 
y=c; 
z=d; 
} 

public double givePerimeter(){ 
    double perimeter = ((w.giveLength() + x.giveLength2())* 2); 
    return perimeter; 
} 

public double giveArea(){ 
    double area = (w.giveLength() * y.giveLength2()); 
    return area; 
} 


} 

미리 도움을 주셔서 감사합니다!

private Vector w = new Vector(); 
private Vector x = new Vector(); 
private Vector y = new Vector(); 
private Vector z = new Vector(); 

하지만 당신은 인수와 벡터 생성자가 없습니다 :

+1

숙제에는 '숙제'태그가 있어야합니다. –

+0

OK, 완료 태그 : –

+0

아, 죄송합니다. 감사. – cal

답변

2

현재 4 개 벡터를 초기화하려고!

포인트가없는 벡터를 구성하는 데는 의미가 없습니다. 당신이하고 싶은 것은 좌표에서 먼저 읽은 다음 4 점을 설정 한 다음 점이 정의되면 점 (물론 2 점씩)에서 4 점의 벡터를 만듭니다.

이렇게 ... private 선언을 포인트가 이미 설정되어있는 곳으로 이동하고 각 괄호 세트에 포인트 쌍을 넣으십시오.

+0

아 감사합니다. 두 번째 지점.현재 받고있는 오류 메시지의 종류는 다음과 같습니다. 심볼을 찾을 수 없습니다. 기호 : constructor Vector() 위치 : 클래스 Vector private Vector w = new Vector(); 이고 이것은 벡터 w, x, y 및 z에 대해 x4입니다. – cal

+0

아, 그게 꽤 쉽습니다. 내 대답을 업데이 트하러 갈거야 ... –

+0

난 위의 코드에서 두 지점을 소요 벡터에 대한 생성자를 참조하십시오. –