Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复制数组并对其执行操作_Java_Encapsulation - Fatal编程技术网

Java 复制数组并对其执行操作

Java 复制数组并对其执行操作,java,encapsulation,Java,Encapsulation,我之前问过一个关于克隆阵列的问题,这样当你改变面积/缩放多边形时。。。它不会更改数组的值(封装的基础)。 在尝试将阵列复制到另一个阵列、使用克隆阵列或使用阵列列表之后,我仍然遇到问题。有人对如何复制我的数组有什么建议吗?这样我就可以对它进行更改,在方法中返回值,但仍然保持传递到构造函数中的原始数组的完整性?Point类定义传入的值。我也会发布。多边形创建了这些方法中的大多数。沮丧的 public class Point { private double x; private double y

我之前问过一个关于克隆阵列的问题,这样当你改变面积/缩放多边形时。。。它不会更改数组的值(封装的基础)。 在尝试将阵列复制到另一个阵列、使用克隆阵列或使用阵列列表之后,我仍然遇到问题。有人对如何复制我的数组有什么建议吗?这样我就可以对它进行更改,在方法中返回值,但仍然保持传递到构造函数中的原始数组的完整性?Point类定义传入的值。我也会发布。多边形创建了这些方法中的大多数。沮丧的

 public class Point {

private double x;
private double y;

public Point(double x, double y) {
    this.x = x;
    this.y = y;
}

public double getX() {
    return x;
}

public double getY() {
    return y;
}

public Point translate(double dx, double dy) {
    return new Point(x+dx, y+dy);
}

public double distanceTo(Point p) {
    return Math.sqrt((p.x - x)*(p.x -x) + (p.y-y)*(p.y-y));
}
}

import java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
公共类PolygonImpl实现多边形{
私有双xSum=0;
私有双ySum=0;
私人点[]点;
专用点[]克隆列表;
私人a点;
公共PolygonImpl(点[]点){
this.points=新点[points.length];
对于(int i=0;i对于(int i=0;i我不确定要在何处克隆阵列;但是我相信您尝试了以下方法:

// This won't work because you keep the same reference to the old objects
public Point[] cloneArrayOfPoints(Point[] points) {
    Point[] result = new Point[points.length];
    for (int i = 0; i < points.length; i++){
        result.points[i] = points[i];
    }
    return result;
}
//这将不起作用,因为您对旧对象保留相同的引用
公共点[]个点(点[]个点){
点[]结果=新点[points.length];
对于(int i=0;i
但是,您应该尝试以下方法:

// This will work because you create new objects with same old values
public Point[] cloneArrayOfPoints(Point[] points) {
    Point[] result = new Point[points.length];
    for (int i = 0; i < points.length; i++){
        result.points[i] = new Point(points[i].getX(), points[i].getY());
    }
    return result;
}
//这将起作用,因为您使用相同的旧值创建新对象
公共点[]个点(点[]个点){
点[]结果=新点[points.length];
对于(int i=0;i
他的Point类是不可变的,所以他不需要创建新的Point。@Alpedar,是的。我不确定Fish想用这些类做什么。因此我只是试图回答他的问题“如何复制我的数组以便对其进行更改…”。很高兴听到它对他起了作用。
// This will work because you create new objects with same old values
public Point[] cloneArrayOfPoints(Point[] points) {
    Point[] result = new Point[points.length];
    for (int i = 0; i < points.length; i++){
        result.points[i] = new Point(points[i].getX(), points[i].getY());
    }
    return result;
}