使2个变量等于函数,var 1自动将值更改为var2

时间:2017-03-04 01:05:20

标签: java

好的,所以我制作了一个简单的程序来练习java中的多类,但我无法找到解决这个问题的方法:

我有两个int[][]变量(坐标),coords1coords2,两者都等于要求坐标输入的函数,

奇怪的部分是在第一次输入之后,coords1得到它的值,然后我输入coords2,它也得到它的值,但同时coords1将自动获得与coords2相同的值,我不知道为什么,这是代码:

if(simbolo.equals("circulo") || simbolo.equals("Circulo") || simbolo.equals("Circle") || simbolo.equals("circle")){
            circulo.setColour();
            colour1 = circulo.getColour();
            circulo.setColour(); //circulo 2
            colour2 = circulo.getColour();
            coords1 = circulo.getCoords();                                         //IMPORTANT PART
            System.out.println("coords1: " + coords1[0][0] + " " + coords1[0][1]);//IMPORTANT PART
            coords2 = circulo.getCoords();//circulo2                              //IMPORTANT PART
            //System.out.println("coords2: " + coords2[0][0] + " " + coords2[0][1]);
            System.out.println("2-coords1: " + coords1[0][0] + " " + coords1[0][1]);//IMPORTANT PART
            circulo.setRaio();
            r1 = circulo.getRario();
            circulo.setRaio(); //circulo2
            r2 = circulo.getRario();
            area1 = calcCircleArea(r1);
            perimetro1 = calcCirclePerimeter(r2);
            area2 = calcCircleArea(r1);//circulo2
            perimetro2 = calcCirclePerimeter(r2);
            distance = Distance(coords1, coords2);
            System.out.println("A distância entre os centros dos círculos é: " + distance);
            intersection = Intersects(distance, r1, r2);
            System.out.println(intersection);
        }

第一个System.out.println("coords1: " + coords1[0][0] + " " + coords1[0][1]);会给我一个不同于System.out.println("2-coords1: " + coords1[0][0] + " " + coords1[0][1]);

的值

这是函数setCoordinates()

public int[][] center = new int[1][2];

    Scanner scan = new Scanner(System.in);

    public int[][] setCoordinates(){
    System.out.println("Introduza a coordenada do centro: x ");
    center[0][0] = scan.nextInt();
    System.out.println("y: ");
    center[0][1] = scan.nextInt();

    System.out.println("Centro atual: " + Arrays.toString(center[0]));
    return center;
    }

班级circulo getCoords()中的函数只会从此处获取返回的值。

编辑:"IMPORTANT PART"是我使用这些变量的地方

一定有些事情我做得不对,但在哪里?

谢谢

1 个答案:

答案 0 :(得分:2)

由于您已在 setCoordinates 方法之外声明了变量 center ,因此它不是该方法的局部变量。这就是为什么每当你调用方法 setCoordinates 时,前一个值都会被新值覆盖。您需要在 setCoordinates 方法中声明变量 center