我需要用坐标创建一个n维点。构造函数应该采用任意数量的坐标。

时间:2013-11-22 20:17:06

标签: java arrays arraylist constructor n-dimensional

在这个项目中还有更多,但我不知道如何开始我坚持如何创建一个带有数组的构造函数,该数组将在一个点上采用未知数量的维度。

2 个答案:

答案 0 :(得分: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();
    
        }
    }
    

答案 1 :(得分:0)

如果您不想传递数组,可以使用所谓的&#34; varargs&#34;。

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

然后你可以打电话:

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