Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 如何为多维数组创建getter方法和setter方法?_Java_Arrays_Methods_Get_Set - Fatal编程技术网

Java 如何为多维数组创建getter方法和setter方法?

Java 如何为多维数组创建getter方法和setter方法?,java,arrays,methods,get,set,Java,Arrays,Methods,Get,Set,首先,对不起我的英语,我是法国人 以下是我试图用数学符号来解决的问题: 我有一对像这样的坐标:(x,y) An={(Xn;Yn)} array[An][(Xn;Yn)]={{X1;Y1}{X2;Y2}…{Xz;Yz} 在我的程序中,我需要为多维数组创建一个getter和setter 这是我的代码: //Infos for animations of objects //Sorting Random random1 = new Random(); int obsc

首先,对不起我的英语,我是法国人

以下是我试图用数学符号来解决的问题:

我有一对像这样的坐标:
(x,y)

An={(Xn;Yn)}

array[An][(Xn;Yn)]={{X1;Y1}{X2;Y2}…{Xz;Yz}

在我的程序中,我需要为多维数组创建一个getter和setter

这是我的代码:

    //Infos for animations of objects

    //Sorting
    Random random1 = new Random();
    int obscMin=0, obscMax=4; //I sort them to know how many obstacles will have to be created. obsc is the obstacle
    int nbreObsc = obscMin + random1.nextInt(obscMax - obscMin); //nbreObsc is the number of obstacles
    //End of sorting

    /*Here's the model of a table:
     A couple: An={(Xn;Yn)}
     Tableau1[An][(Xn;Yn)]={{X1;Y1}{X2;Y2}...{Xz;Yz}};*/

    float posObsc [] []=new float [nbreObsc] [2]; //New table, which will contain the positions of the obstacles

    //Obstacle position getter and setter
    public float[][] getPosObsc(){//getters
        return posObsc;
    }
    public void setPosObsc(float[][] posObsc){//setters
        this.posObsc=posObsc;
    }
    //End of obstacle position getter and setter

    protected boolean detruireObsc=false; //"detruireObsc" means "destroyObstacle"

    //Algorithm that defines the movement of obstacles
    protected void obscDeplacemt(){
        for(int i=1;i<=nbreObsc;i++){
        //Sorting to determine the Xs
        float ordMin=0,ordMax=width;
        float ordObsc = ordMin + (float)Math.random() * (ordMax - ordMin); //ordObsc means obstacleXPosition
        setPosObsc( posObsc [i][0]);
        //End of sorting
        }
    }
  //End of obstacle movement algorithm
//对象动画信息
//分类
Random random1=新的Random();
int obscMin=0,obscMax=4//我对他们进行分类,以了解需要制造多少障碍。obsc是障碍
int nbreObsc=obscMin+random1.nextInt(obscMax-obscMin)//nbreObsc是障碍物的数量
//分拣结束
/*以下是表格的模型:
一对:An={(Xn;Yn)}
表1[An][(Xn;Yn)]={{X1;Y1}{X2;Y2}…{Xz;Yz}*/
浮动posObsc[][]=新浮动[nbreObsc][2]//新表,其中将包含障碍物的位置
//障碍位置接球手和接球手
公共浮点[][]getPosObsc(){//getters
返回posObsc;
}
public void setPosObsc(float[][]posObsc){//setters
this.posObsc=posObsc;
}
//障碍物末端位置接球手和接球手
受保护的布尔detruireObsc=false//“detruireObsc”是指“Destruireobsc”
//定义障碍物移动的算法
受保护的无效obscDeplacemt(){
对于(int i=1;i代码行:

setPosObsc( posObsc [i][0]);
正在使用数组数组中的单个
float
元素调用
setPosObsc()
方法。但是该方法使用数组数组

要使代码编译,您可以编写:

setPosObsc(posObsc);
虽然这可能不是您想要的!如果您试图编写一个方法,在特定点将浮点放入数组中,您将需要以下内容:

void setObstacleAt(int obstacleIndex, int boundaryIndex, float shiftDistance) {
    posObsc[obstacleIndex][boundaryIndex] = shiftDistance;
}
我在胡乱猜测你的数组包含什么

作为一个旁注,而不是编写注释来解释方法名称,您可以考虑使用没有缩写的更长或更精确的方法名称。在爪哇中,变量和方法名称的长度没有实际限制。


顺便说一句,在StackOverflow不是你的第一语言的时候,我有勇气用英语写它,做得很好。甚至在Runemoro编辑之前,我都能理解你的问题。

你的getter和setter方法很好。错误是因为在obscDeplacemt()的最后一行代码中,你调用了setPosObsc(posObscp[I][0]).posObscp[i][0]将为您提供一个浮点值,而您的setter方法需要参数中的浮点值数组才能正常工作。祝您好运!

看起来您要做的是:

posObsc[i][0] = ordObsc;
如果您在同一个类中,则无需使用setter

如果希望能够通过索引在外部设置元素值(而不是覆盖整个数组),有两种方法:

1) (不推荐)

由于在getter中公开了整个数组,因此理论上可以调用

getPostObsc()[i][0] = ordObsc;
2) (推荐)

将您的getter和setter更改为

public float getPosObsc(int x, int y){
    return posObsc[x][y];
}
public void setPosObsc(int x, int y, float val){
    this.posObsc[x][y] = val;
}
现在可以使用setter和索引更新元素:

setPostObsc(i, 0, ordObsc);

您介意我将评论翻译成英语吗?请提供可编译的代码。@Runemoro//Absolumt pas c'Est avec grd plaisir!Traduit Traduit et Traduit encore:p@Runemoro//我可以为你开脱了!@Pif-Paf-Pouf:Je-sais,et'ca-que-j'ai事实:PBig thk!这正是我需要的答案!这是我需要的答案!@Pif_Paf_Pouf:Pour rendre le program plus faile lire,Tu peux faire
Ctrl+Shift+F
en eclipse Pour metre tous les espaces aux bons endroits et tout alinger.@Runemoro//Sympa je savais pas.谢谢这正是我需要的答案!谢谢i:)