Create new matrix with content from another matrix

Asked

Viewed 90 times

1

Main matrix:

public static String [][] matrizPrincipal(){
     String [] [] matriz = new String [2] [6];
     matriz[0][0] = "Robin Arryn";
     matriz[0][1] = "Lino Facioli";
     matriz[0][2] = "145";
     matriz[0][3] = "Vivo";
     matriz[0][4] = "Arryn";
     matriz[0][5] = "Feminino";

     matriz[1][0] = "Yohn Royce";
     matriz[1][1] = "Rupert Vansittart";
     matriz[1][2] = "45";
     matriz[1][3] = "Vivo";
     matriz[1][4] = "Arryn";
     matriz[1][5] = "Feminino";
     return matriz;
}

Method of character case (column 0 of the main mother) is a woman (column 5) and belong to the family Arryn (spine 4) adds this character’s name to a new matrix:

public static void imprimeMatrizFeminina(String [] [] mat){
     int cont = 0;
     //Método para Mulheres da família Arryn
     for(int i=0; i<mat.length; i++){
        if(mat[i][5].equals("Feminino") && mat[i][4].equals("Arryn")) cont ++;
     }
     String[] matrizFemininaArryn = new String [cont];

     for(int i=0; i<mat.length; i++){
        for(int j=0; j<matrizFemininaArryn.length; j++){
           if(mat[i][5].equals("Feminino") && mat[i][4].equals("Arryn")){
               matrizFemininaArryn[j] = mat[i][0];
           }
        }    
     }
     System.out.println("Mulheres da família Arryn em ordem alfabética crescente:" + Arrays.toString(matrizFemininaArryn));
}

But when testing, it returns only the first character (Robin Arryn) and the second position returns null instead of the name Yohn Royce.

Imagery:

inserir a descrição da imagem aqui

1 answer

1


This problem happens because in the method imprimeMatrizFeminina you iterate n times about the array matrizFemininaArryn, which is unnecessary, remove the third for and use the variable j as an index:

public static void imprimeMatrizFeminina(String [] [] mat){
    int cont = 0, j = 0;
    for(int i = 0; i < mat.length; i++)
       if(mat[i][5].equals("Feminino") && mat[i][4].equals("Arryn")) cont ++;

    String[] matrizFemininaArryn = new String [ cont ];

    for(int i = 0; i < mat.length; i++){
        if(mat[i][5].equals("Feminino") && mat[i][4].equals("Arryn")){
            matrizFemininaArryn[j] = mat[i][0];
            j ++;
        }
    }
    System.out.println("Mulheres da família Arryn em ordem alfabética crescente:" + Arrays.toString(matrizFemininaArryn));
}

See demonstração

Alternatively, you can use a list:

public static void imprimeMatrizFeminina(String [] [] mat){
    List<String> matrizFemininaArryn = new ArrayList<String>();

    for(int i = 0; i < mat.length; i++){
        if(mat[i][5].equals("Feminino") && mat[i][4].equals("Arryn")){
            matrizFemininaArryn.add(mat[i][0]);
        }
    }
    System.out.println("Mulheres da família Arryn em ordem alfabética crescente: " + matrizFemininaArryn);
}

See demonstração

  • 1

    Excellent! That was it ! Thank you very much xD

Browser other questions tagged

You are not signed in. Login or sign up in order to post.