Я хотел бы изменить значение переменных, содержащихся в матрице. Значение инициализации переменных должно быть нулевым, однако для целей тестирования 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)