如何编辑矩阵中的变量-Java?
我想更改矩阵中包含的变量值。 变量的初始化值必须为零,但是出于测试目的,c1被初始化为一个值为9的整数,以查看打印上会反映什么。 我能看到的是,当从矩阵中访问变量时,声明变量的初始值会正确地反映出来,但是在尝试增加值之后,这似乎只对变量本身有效,而不是从矩阵中访问时如何编辑矩阵中的变量-Java?,java,matrix,Java,Matrix,我想更改矩阵中包含的变量值。 变量的初始化值必须为零,但是出于测试目的,c1被初始化为一个值为9的整数,以查看打印上会反映什么。 我能看到的是,当从矩阵中访问变量时,声明变量的初始值会正确地反映出来,但是在尝试增加值之后,这似乎只对变量本身有效,而不是从矩阵中访问时 package matrixvariable; public class MatrixVariable { MatrixVariable(){ //Constructor g
package matrixvariable;
public class MatrixVariable {
MatrixVariable(){ //Constructor
getCajaUnoCount();
getCajaDosCount();
cajaUnoCountIncrement();
cajaUnoCountIncrement();
getCajaUnoCount();
getCajaDosCount();
cajaTresCountIncrement();
printContadores();
sortContadoresCajas();
System.out.println(contadoresCajas[0][0] + contadoresCajas[0][1]); //Manual checking
}
int c2,c3,tmp0,tmp1 = 0;
int c1 =9;
int [][] contadoresCajas= {{1,c1},{2,c2},{3,c3}};
public void sortContadoresCajas(){
System.out.println("OPS: sortContadoresCajas()");
for(int i=0;i<=contadoresCajas.length-1;i++){
for(int j=i;j<=contadoresCajas.length-1;j++){
if (contadoresCajas[j][1]<contadoresCajas[i][1]){
tmp0 = contadoresCajas[i][0];
tmp1 = contadoresCajas[i][1];
contadoresCajas[i][0]=contadoresCajas[j][0];
contadoresCajas[i][1]=contadoresCajas[j][1];
contadoresCajas[j][0]=tmp0;
contadoresCajas[j][1]=tmp1;
}
}
}
printContadores();
}
public void printContadores(){
System.out.println("OPS : printContadores()");
for(int i=0;i<=contadoresCajas.length-1;i++)
System.out.println("OPS : " + contadoresCajas[i][0] + " " + contadoresCajas[i][1] );
}
//PRINTERS
public void getCajaUnoCount(){
System.out.println("OPS : getCajaUnoCount()-> " + c1);
}
public void getCajaDosCount(){
System.out.println("OPS : getCajaDosCount()-> " + c2);
}
public void getCajaTresCount(){
System.out.println("OPS : getCajaTresCount()-> " + c3);
}
public void cajaUnoCountIncrement(){
System.out.println("OPS : cajaUnoCountIncrement()");
c1++;
}
public void cajaDosCountIncrement(){
System.out.println("OPS : cajaDosCountIncrement()");
c2++;
}
public void cajaTresCountIncrement(){
System.out.println("OPS : cajaTresCountIncrement()");
c3++;
}
public static void main(String[] args) {
MatrixVariable foo = new MatrixVariable();
}
}
您永远不会将递增的值设置为要递增的矩阵索引
public void cajaUnoCountIncrement(){
System.out.println("OPS : cajaUnoCountIncrement()");
c1++;
contadoresCajas[0][1] = c1;
}
public void cajaDosCountIncrement(){
System.out.println("OPS : cajaDosCountIncrement()");
c2++;
contadoresCajas[1][1] = c2;
}
public void cajaTresCountIncrement(){
System.out.println("OPS : cajaTresCountIncrement()");
c3++;
contadoresCajas[2][1] = c3;
}
输出
操作:getCajaUnoCount->9
操作:GetCajadoscont->0
行动:卡尤诺山
行动:卡尤诺山
行动:卡贾多斯
行动:卡贾多斯
行动:卡贾多斯
行动:CajatresContinentCrement
操作:getCajaUnoCount->11
操作:GetCajadoscont->3
OPS:printContadores
行动:11
行动:23
行动:3 1
行动:SORTCONTADDORESCAJAS
OPS:printContadores
行动:3 1
行动:23
行动:11
四,
设置递增的值是不够的,我还必须告诉它在哪里分配它,因为创建了另一个函数来分配它所需的位置:
public int findKey(int keytofind){
System.out.println("OPS : keytofind is: " + keytofind);
System.out.println("OPS : start :findKey()");
for (int h=0; h<contadoresCajas.length;h++){
if (contadoresCajas[h][0] == keytofind ){
keyfound=h;
System.out.println("OPS : keyfound is: " + keyfound);
}
}
System.out.println("OPS : end :findKey()");
return keyfound;
}
public void cajaUnoCountIncrement(){
System.out.println("OPS : cajaUnoCountIncrement()");
c1++;
kf = findKey(1);
contadoresCajas[kf][1] = c1;
}
你的能手不是能手。getter的目的是返回一个值,而不是打印出来什么也不返回。@khelwood删除了注释,谢谢。这行不通,因为如果我用sortContadoresCajas重新排序,它会返回“OPS:sortContadoresCajas OPS:printContadores OPS:3 1 OPS:1 11 OPS:2 12”``这是错误的。@DRP我无法理解c2是如何为12的,因为您从未设置c2=c1。我的想法是,我永远不会事先知道c1,c2,或者c3将按sortContadoresCajas排序,因此我无法预先定义c2=c1或任何可能的组合。@DRP,如果您对上述修复进行更改,并告诉用例,如果您再添加一个cajaUnoCountIncrement,它可能会像构造函数上的c1、c2和c3值一样崩溃;和Sortcontaindorescajas;您将看到我的第一条评论中提到的输出,它给出了错误的输出,因为您将递增计数器并将其分配到错误的位置。在这一点上,我不确定用例的目的是什么。所需要做的就是增加变量,并根据键的值对keyvalue进行适当排序。我们的键是1,2,3,变量是c1,c2,c3,因此{1,c1},{2,c2},{3,c3}。如果c3小于c2&c1,那么将其排序为第一:{3,c3},{2,c2},{1,c1}
public int findKey(int keytofind){
System.out.println("OPS : keytofind is: " + keytofind);
System.out.println("OPS : start :findKey()");
for (int h=0; h<contadoresCajas.length;h++){
if (contadoresCajas[h][0] == keytofind ){
keyfound=h;
System.out.println("OPS : keyfound is: " + keyfound);
}
}
System.out.println("OPS : end :findKey()");
return keyfound;
}
public void cajaUnoCountIncrement(){
System.out.println("OPS : cajaUnoCountIncrement()");
c1++;
kf = findKey(1);
contadoresCajas[kf][1] = c1;
}