Bom, eu estou a muito tempo tentando entender porque meu código esta dando errado, vamos ao codigo:
for (int i = 0; i < fim.length; i++) {
for (int j=0;j<fim[0].length;j++){
fim[i][j]= Character.getNumericValue(par[i][j]);
}
}
Fim = uma matriz de valores inteiros 4x4 ;
par = uma matriz de valores char 4x4.
No código estou tentando converter para inteiro os valores de par, e guardando em fim. O provável motivo do erro é que par vem de outra matriz char 3x3, eu precisava expandi-la, e adicionar novos valores, então criei uma maior, em seguida tentei converter os char para inteiro.
porem o valor das bordas inferior e direita vem tudo bugado, provavelmente por causa dessa diferença de 3x3 e 4x4, não sei se fui bem claro, mas aqui vai o código inteiro pra entender melhor:
public static void main(String[] args) {
Scanner s = new Scanner(<a href="http://System.in">System.in</a>);
char matriz [][] = new char [3][3];
char par [][] = new char [4][4];
int fim[][] = new int [4][4];
String bin;
System.out.println("digite uma sequencia de 9 digitos em binario: ");
bin=s.next();
//System.out.println(bin);
// converte o int em String e cria um array de chars com base na String
char[] digitos = String.valueOf( bin ).toCharArray();
// matriz com os dados
int cont = 0;
for(int i = 0;i< matriz.length;i++){
for(int j=0;j<matriz[0].length;j++){
matriz[i][j] = digitos [cont];
cont++;
}
}
// Só testando pra ver se a matriz ta saindo ok
//Esta ok
System.out.println("matriz: ");
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz.length; j++) {
System.out.print(matriz[i][j]);
}
System.out.println(" ");
}
// Transferindo bits para uma matriz maior
for(int i = 0;i< matriz.length;i++){
for(int j=0;j<matriz[0].length;j++){
par[i][j]=matriz[i][j];
}
}
//Só estanto pra ver se a par ta saindo ok
//Esta ok
System.out.println("Par: ");
for (int i = 0; i < par.length; i++) {
for (int j = 0; j < par.length; j++) {
System.out.print(par[i][j]);
}
System.out.println(" ");
}
//Conversão do vetor para inteiro
for (int i = 0; i < fim.length; i++) {
for (int j=0;j<fim[0].length;j++){
fim[i][j]= Character.getNumericValue(par[i][j]);
}
}
//Só estanto pra ver se a fim ta saindo ok
// ERROR
System.out.println("fim: ");
for (int i = 0; i < fim.length; i++) {
for (int j = 0; j < fim.length; j++) {
System.out.print(fim[i][j]);
}
System.out.println(" ");
}
// checar linhas
for(int i=0;i<2;i++){
// Adicionando bits de paridade
if(fim[i][0] + fim[i][1] + fim[i][2] == 0)
fim[i][3] = 1;
else if(fim[i][0] + fim[i][1] + fim[i][2] == 1)
fim[i][3] = 0;
else if(fim[i][0] + fim[i][1] + fim[i][2] == 2)
fim[i][3] = 1;
else if(fim[i][0] + fim[i][1] + fim[i][2] == 3)
fim[i][3] = 0;
}
// checar colunas
for(int j=0;j<2;j++){
// Adicionando bits de paridade
if(fim[0][j] + fim[1][j] + fim[2][j] == 0)
fim[j][3] = 1;
else if(fim[0][j] + fim[1][j] + fim[2][j] == 1)
fim[j][3] = 0;
else if(fim[0][j] + fim[1][j] + fim[2][j] == 2)
fim[j][3] = 1;
else if(fim[0][j] + fim[1][j] + fim[2][j] == 3)
fim[j][3] = 0;
}
System.out.println(imprimir(fim));
//Impressão com bits
//for(int i = 0;i< matriz.length;i++){
// for(int j=0;j<matriz[0].length;j++){
// System.out.print(par[i][j]);
// }
// System.out.println(" ");
// }
}
//Teste de paridade
public static String imprimir (int x[][]){
String saida = "";
System.out.println();
System.out.println("Com bits de paridade:\n");
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[0].length; j++) {
saida = saida + x[i][j] ; //imprime caracter a caracter
}
saida = saida +"\n"; //muda de linha
}
return saida ;
}