Pessoal,
Estou com uma dúvida simples com arrays. Procurei em todo o forum e não achei um problema parecido com o meu.
É o segunte:
Tenho dois arrays. Um deles tem tamanho X. O segundo tem tamanho 3X.
Exemplo:
int[] a = new int[400];
int[] b = new int[1200];
O que eu preciso é uma forma de colocar na posição 0 do array a, a soma das três primeiras posições do array b. Na posição 1 a soma das 3 próximas, e assim por diante.
Ex:
a[0] = b[0] + b[1] + b[2];
a[1] = b[3] + b[4] + b[5];
(...)
Já tentei vários loops mas não consegui fazer.
Dedraks, bom dia!
Segue um exemplo do que você quer:
public static void main(String[] args) {
int array1[] = new int[2];
int array2[] = new int[6];
// preencher array 1 com valores sequenciais (1...n)
for (int i=0; i<array1.length; i++) {
array1[i] = i+1;
}
// preencher array 2 com valores sequenciais (1...n)
for (int i=0; i<array2.length; i++) {
array2[i] = i+1;
}
// bloco apenas para mostrar os valores do array1 concatenados
String valores = "";
for (int i=0; i<array1.length; i++) {
valores = valores + array1[i];
}
System.out.println("Valores do Array 1: " + valores);
// este bloco faz o processamento que você deseja...
int cont=0;
for (int i=0; i<array1.length; i++) {
array1[i] = (array2[cont] +
array2[cont+1] +
array2[cont+2]);
cont = cont + 3;
}
// blocos apenas para exibir os valores de forma concatenada ...
valores = "";
for (int i=0; i<array2.length; i++) {
valores = valores + array2[i];
}
System.out.println("Valores do Array 2: " + valores);
valores = "";
for (int i=0; i<array1.length; i++) {
valores = valores + array1[i];
}
System.out.println("Valores Processados do Array 1: " + valores);
}
Abraço,
Valeu deu certinho aqui.
O problema era o seguinte:
Eu tenho um arquivo que representa uma imagem em formato raw.
Uma imagem toda vermelha nesse arquivo seria assim:
FF 00 00 FF 00 00 FF 00 00 FF 00 00 ...
Então meu problema era carregar esse arquivo em um array de bytes e depois jogar a cada 3 posições em um array de int.
Enão meu código ficou assim:
[code]
byte[] buffer = [altura * largura * 3];
int[] pixels = [altura * largura];
// Carrego o arquivo
(…)
// Faço o loop que você me passou
int cont=0;
for (int i=0; i<pixels.length; i++) {
pixels[i] = Color.rgb(buffer[cont] & 0xFF, buffer[cont+1] & 0xFF, buffer[cont+2] & 0xFF);
cont = cont + 3;
}
// Continuo com meu programa[/code]
Muito obrigado pela ajuda