У меня было несколько проблем при попытке конвертировать программу 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.
Любая помощь поможет. Спасибо.