В этом проекте гораздо больше, но я не знаю, как начать. Я застрял на том, как создать конструктор с массивом, который примет неизвестное количество измерений в точке.Мне нужно создать n-мерную точку с координатами. Конструктор должен принимать любое количество координат.
ответ
Вы можете иметь массив в качестве аргумента для конструктора
public class MultiDemPoint{
public MultiDemPoint(double[] coords){
}
}
Вам нужно будет передать массив двойников:
new MultiDemPoint(new double[]{4, 5.0, 3, 2, 6, 4.6});
Вы также можете рассчитывать на неопределенное количество координат в качестве отдельных значений
public class MultiDemPoint{
public MultiDemPoint(double... coords){
}
}
В этом случае вы можете передать параметры, например new MultiDemPoint(4, 5.0, 3, 2, 6, 4.6);
.
Практика:
- Создайте новый пустой проект в вашей IDE
Создать
MultDemPoint.java
файл с помощью следующего кода:public class MultiDemPoint{ private double[] coords; //double... coords will automatically convert all supplied coordinates to the array, // we can store it in double[] coords. public MultiDemPoint(double... coords){ this.coords = coords; } public void printCoords(){ for(int i=0; i<coords.length; i++){ System.out.println("Coordinate #"+i+": "+coords[i]); } System.out.println(""); } }
Используйте этот код для вашего
Main.java
public class Main { public static void main(String[] args){ MultiDemPoint point1 = new MultiDemPoint(1,2,3,4); MultiDemPoint point2 = new MultiDemPoint(3); MultiDemPoint point3 = new MultiDemPoint(5.44444444,232323.12323,321321); System.out.println("Point1 coordinates:"); point1.printCoords(); System.out.println("Point2 coordinates:"); point2.printCoords(); System.out.println("Point3 coordinates:"); point3.printCoords(); } }
Внутри блока метода вы рассматриваете аргумент varargs как массив, поэтому первый «double» будет «coords [0]» точно так же, как в первом примере. Это просто позволяет более удобное обращение к методу ... вы можете сделать 'MultiDemPoint (1,4,8,9)' вместо 'double [] d = {1, 4, 8, 9}; MultiDemPoint (г) '. – dcsohl
@ user3023185 проверить обновления – mdolbin
Любые предложения о том, что я должен использовать для getters и seters в конструкторе. В последнем проекте я использовал x и y. Но в этом проекте не определено. – sptBot
Если вы не хотите передавать массив, вы можете использовать так называемые «varargs».
public class Point
{
public Point(double... x)
{
}
}
Тогда вы можете позвонить:
new Point(1, 2, 3);
new Point(1, 2, 3, 4);
почему вы не можете использовать массив в качестве аргумента? – Alessio
Я не знаю, как структурировать конструктор, чтобы взять неизвестное число мер в точке. В последнем проекте, который мы сделали, нам пришлось получить линейную трехмерную координату x, y, z. Но в этом проекте мы должны использовать n-мерное, которое может быть x, y, z, a, b, c .... пока пользователь не нажмет Exit. Затем мне нужно получить линейку из размеров из двух точек. – sptBot