java - 如何编辑存在于矩阵中的变量 - Java?
问题描述
我想更改矩阵中包含的变量值。变量的初始化值必须为零,但出于测试目的,c1 被初始化为值为 9 的整数,以查看打印中会反映什么。我可以看到,声明变量的初始值在从矩阵访问时正确反映,但是在尝试增加值之后,这似乎只对变量本身正确,而不是从矩阵访问时。
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();
}
}
所有这些都打印出以下内容:
run:
OPS : getCajaUnoCount()-> 9
OPS : getCajaDosCount()-> 0
OPS : cajaUnoCountIncrement()
OPS : cajaUnoCountIncrement()
OPS : getCajaUnoCount()-> 11
OPS : getCajaDosCount()-> 0
OPS : cajaTresCountIncrement()
OPS : printContadores()
OPS : 1 9 // 11?
OPS : 2 0
OPS : 3 0
OPS: sortContadoresCajas()
OPS : printContadores()
OPS : 2 0
OPS : 3 0
OPS : 1 9 //I would expect this to be 11
2
BUILD SUCCESSFUL (total time: 0 seconds)
解决方案
设置增量值是不够的,我还必须告诉它在哪里分配它,因为创建了另一个函数来为其分配所需的位置:
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;
}
推荐阅读
- html - Firefox中的这个假伪元素是什么?
- amazon-web-services - 无法获取子网 ID | 地形规划
- java - Spring Boot gRPC:发生业务错误时如何返回错误码?
- jakarta-ee - 如何分离 eclipselink 加载的实体以通过 jaxb 或 yasson 对其进行序列化?
- python - 我有两组数据,排列在两列中。dataM 有一些点与 dataS 匹配;如何找到它们匹配的行?
- serenity-bdd - 如何为特定测试类重置 serenity.property 重启浏览器
- c++ - 如何从 C++ 构造 Nan::FunctionCallbackInfo 对象
- web - 如何在单页应用程序中使用 Active Directory 实现单点登录?
- function - ZSH Alias 会触发终端通知程序,但不会触发生成它的命令
- sql-server - 如何从单个 SQL 脚本创建 dacpac