2014-11-21 4 views
-2

Мне нужно создать класс для вычисления расстояния между двумя заданными точками для класса. Инструктор дал нам верхнюю половину задания со всем необходимым кодом без изменения, проблема, с которой им связано, заключается в создании части класса. Это то, что я до сих пор ...Расчет расстояния между двумя заданными точками

class Point{ 
int x; 
int y; 

public Point(){ 
    this.x = 0; 
    this.y = 0; 

} 

public Point(int x, int y){ 
    this.x = x; 
    this.y = y; 
} 
public double distance(int x, int y) { 
    double d = Math.sqrt(Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)); 
    return distance; 
} 
} 

верхняя часть задания выглядит следующим образом:

import java.util.Scanner; 


class Assignment4{ 
public static void main(String[] args){ 
    // first and second points 
    Point first, second; 

    // try parsing points from command line args 
    if(args.length==4){ 
     // new Point(int x, int y) creates a new Point located at position (x,y) 
     first = new Point(Integer.valueOf(args[0]), Integer.valueOf(args[1])); 
     second = new Point(Integer.valueOf(args[2]), Integer.valueOf(args[3])); 
    } 

    // if not specified as argument, get points from user 
    else{ 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter first point: "); 
     first = new Point(input.nextInt(),input.nextInt()); 

     System.out.println("Enter second point: "); 
     second = new Point(input.nextInt(),input.nextInt()); 
    } 

    //calculate distance 
    //double d = Math.sqrt(Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)); 
    double d = first.distance(second.x, second.y); 

    System.out.println("Distance between " + 
     "(" + first.x + "," + first.y + ")" + 
     " and " + 
     "(" + second.x + "," + second.y + ")" + 
     " is " + d); 
    System.out.println(); 
} 
} 

Когда я попробовать и скомпилировать программу, он говорит: «не может найти символ» со ссылкой к x2, x1, y2, y1 и расстоянию.

+0

@ChthonicProject Не очень - 'distance()' является методом экземпляра, и он пытается вычислить расстояние между текущей «точкой» и точкой, координаты которой заданы двумя аргументами. – ajb

+0

Было ли определение 'расстояние', т. Е.' Public double distance (int x, int y) ', данное вам как часть задания, или это была ваша идея? Мне просто интересно, почему метод должен принимать 'x' и' y' вместо другого 'Point'. – ajb

ответ

0

здесь:

class Point{ 
    int x; 
    int y; 

    ..... 
    ..... 

    public double distance(int x, int y) { 
     double d = Math.sqrt(Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)); //ERROR IN THIS LINE 
     return distance; //ERROR HERE TOO...(2) 
    } 
} 

Там нет x1, x2, y1, y2, определенный в классе или в параметре метода.

Сменный его с помощью следующей строки:

двойной д = Math.sqrt (Math.pow (this.x-х, 2) + Math.pow (this.y-у, 2));

(2) Ошибка 2 своп с этой линией:

возвращение г;

+0

спасибо! это очень помогло. но когда я использую эту фиксированную часть, я получаю еще одну ошибку, относящуюся к: first = new Point (Integer.valueOf (args [0]), Integer.valueOf (args [1])); second = new Point (Integer.valueOf (args [2]), Integer.valueOf (args [3])); } плохо получить подробную информацию об ошибке, когда я могу запустить ее дома –

+0

уверен, что проблем нет :). Я не понимаю, что вы сказали об фиксированной части, и я не понимаю, почему эта часть кода даст ошибку, если вы передадите ей действительные параметры. Отправьте мне сообщение об ошибке, после чего я могу вам помочь. – j4rey89

Смежные вопросы