2013-11-22 4 views
1

В этом проекте гораздо больше, но я не знаю, как начать. Я застрял на том, как создать конструктор с массивом, который примет неизвестное количество измерений в точке.Мне нужно создать n-мерную точку с координатами. Конструктор должен принимать любое количество координат.

+0

почему вы не можете использовать массив в качестве аргумента? – Alessio

+0

Я не знаю, как структурировать конструктор, чтобы взять неизвестное число мер в точке. В последнем проекте, который мы сделали, нам пришлось получить линейную трехмерную координату x, y, z. Но в этом проекте мы должны использовать n-мерное, которое может быть x, y, z, a, b, c .... пока пользователь не нажмет Exit. Затем мне нужно получить линейку из размеров из двух точек. – sptBot

ответ

3

Вы можете иметь массив в качестве аргумента для конструктора

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(); 
    
        } 
    } 
    
+0

Внутри блока метода вы рассматриваете аргумент varargs как массив, поэтому первый «double» будет «coords [0]» точно так же, как в первом примере. Это просто позволяет более удобное обращение к методу ... вы можете сделать 'MultiDemPoint (1,4,8,9)' вместо 'double [] d = {1, 4, 8, 9}; MultiDemPoint (г) '. – dcsohl

+0

@ user3023185 проверить обновления – mdolbin

+0

Любые предложения о том, что я должен использовать для getters и seters в конструкторе. В последнем проекте я использовал x и y. Но в этом проекте не определено. – sptBot

0

Если вы не хотите передавать массив, вы можете использовать так называемые «varargs».

public class Point 
{ 
public Point(double... x) 
{ 
} 
} 

Тогда вы можете позвонить:

new Point(1, 2, 3); 
new Point(1, 2, 3, 4);