У меня возникло несколько вопросов, пытающихся преобразовать программу Point на сайт Dart в Java. Программа Dart отображается ниже:Попытка конвертировать программу Dart в Java
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
, но программа Точки в Дарте выводит 36.05551275463989
.
Основная проблема пытается преобразовать эти заявления в Java:
Point scale(num factor) => new Point(x*factor, y*factor);
num distance() => Math.sqrt(x*x + y*y);
Я видел этот тип синтаксиса в C++, по крайней мере то, что мало я на самом деле изучал его (я остановился, когда я был введен в указатели и ссылки). Однако я спросил кого-то еще, и они сказали мне, что эти утверждения фактически использовались для определения функций. Я здесь, чтобы понять, правильно ли этот человек и как понять, что означают эти выражения в терминах Java.
Любая помощь поможет. Благодарю.
Теперь он работает после внедрения нового кода конструктора. Тем не менее, я хотел посмотреть, могу ли я преобразовать глобальные переменные в int и преобразовать их в double в конструкторе. Я также редко использую «это» ключевое слово, но из его использования в конструкторе он, как представляется, вызывает ранее определенную глобальную переменную в методе для ее использования. Любая помощь с этим будет высоко оценена. – Rxanadu
Еще раз спасибо за помощь. Ваше объяснение имеет смысл для меня, что больше, чем я могу сказать о многих объяснениях примеров кода в Интернете. Я также использовал int в «целых числах вне методов» (не знаю, как их действительно назвать, поскольку вы заявили, что они не были глобальными), а также параметры в конструкторе, и я получил тот же результат , Я предполагаю, что метод «distance» смог легко преобразовать целые числа в двойные части с помощью вызова метода Math.sqrt(). – Rxanadu
Это переменные класса (иногда называемые атрибутами), вы можете их так назвать. 'Math.sqrt()' неявно отбрасывает свой целочисленный параметр в double. – rotsch