Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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?_Java_Matrix - Fatal编程技术网

如何编辑矩阵中的变量-Java?

如何编辑矩阵中的变量-Java?,java,matrix,Java,Matrix,我想更改矩阵中包含的变量值。 变量的初始化值必须为零,但是出于测试目的,c1被初始化为一个值为9的整数,以查看打印上会反映什么。 我能看到的是,当从矩阵中访问变量时,声明变量的初始值会正确地反映出来,但是在尝试增加值之后,这似乎只对变量本身有效,而不是从矩阵中访问时 package matrixvariable; public class MatrixVariable { MatrixVariable(){ //Constructor g

我想更改矩阵中包含的变量值。 变量的初始化值必须为零,但是出于测试目的,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();
    }

}


您永远不会将递增的值设置为要递增的矩阵索引

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;
    }