Dúvida com array

3 respostas
dedraks

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.

3 Respostas

rodrigo.ferreira

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,

dedraks

Obrigado :wink:

dedraks
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:
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

Muito obrigado pela ajuda

Criado 14 de maio de 2011
Ultima resposta 16 de mai. de 2011
Respostas 3
Participantes 2