Попытка конвертировать программу Dart в Java - PullRequest
0 голосов
/ 30 января 2012

У меня было несколько проблем при попытке конвертировать программу Point на сайте Dart в Java. Программа Dart отображается ниже:

class Point {
  num x, y;
  Point(num this.x, num this.y);
  Point scale(num factor) => new Point(x*factor, y*factor);
  num distance() => Math.sqrt(x*x + y*y);
}

void main() {
  Point a = new Point(2,3).scale(10);
  print(a.distance());
}

Вот что я придумала:

public class PointJava {

int x, y;

public PointJava(int x, int y){
    int a = x;
    int b = y;
}

public PointJava scale(int factor){
    PointJava j = new PointJava(factor*x, factor*y); 
    return j;
}

public double distance(){
    double result = Math.sqrt(x*x+y*y);
    return result;
}

public static void main(String[] args) {
    PointJava a = new PointJava(2, 3).scale(10);
    System.out.println(a.distance());
}

}

Выводит двойной тип числа 0.0, но программа Point в дротиках выводит 36.05551275463989.

Основная проблема заключается в попытке преобразовать эти операторы в Java:

Point scale(num factor) => new Point(x*factor, y*factor);
num distance() => Math.sqrt(x*x + y*y);

Я видел этот тип синтаксиса в C ++, по крайней мере то, что мало изучал (я остановился, когда меня познакомили с указателями и ссылками). Однако я спросил кого-то еще, и они сказали мне, что эти утверждения фактически использовались для определения функций. Я здесь, чтобы узнать, прав ли этот человек, и понять, что означают эти утверждения в терминах Java.

Любая помощь поможет. Спасибо.

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Ваш конструктор должен выглядеть следующим образом:

public PointJava(int x, int y){
    this.x = x;
    this.y = y;
}

Кроме того, вы должны использовать float или double вместо int.

Ключевое слово this ссылается нак текущему объекту.this.x - это переменная класса с именем x, принадлежащая объекту this.Это не совсем глобально.Однако, поскольку вы принимаете параметр с именем x, вы должны различать два, используя ключевое слово this.Если вы измените то, что вы называете переданным параметром, вы можете избежать использования ключевого слова (хотя для этого нет разумной причины):

public PointJava(int newX, int newY){
    x = newX;
    y = newY;
}
1 голос
/ 30 января 2012

Проблема в вашем конструкторе: она должна быть

public PointJava(int x, int y) {
  this.x = x;
  this.y = y;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...