Como comparar valores de uma matriz com um vetor java

Vetores s�o estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um certo tipo; por esta raz�o, tamb�m s�o conhecidos como estruturas homog�neas de dados.

Internamente, um vetor armazena diversos valores, cada um associado a um n�mero que se refere � posiç�o de armazenamento, e � conhecido como �ndice. Os vetores s�o estruturas indexadas, em que cada valor que pode ser armazenado em uma certa posiç�o (�ndice) � chamado de elemento do vetor.

Cada elemento do vetor pode ser utilizado individualmente de forma direta, ou seja, pode ser lido ou escrito diretamente, sem nenhuma regra ou ordem preestabelecida, fazendo dos vetores estruturas de dados de acesso aleat�rio.O n�mero de posiç�es de um vetor corresponde ao tamanho que ele tem; assim, um vetor de tamanho 10 tem esse n�mero de elementos, isto �, pode armazenar at� dez elementos distintos. Os diferentes elementos de um vetor s�o�distinguidos unicamente�pela�posiç�o�que ocupam no vetor. Cada posiç�o de um vetor � unicamente identificada por um valor inteiro positivo, linear e sequencialmente numerado.

a[i], corresponde ao i-�simo elemento do vetor�a, sendo que o valor da vari�vel�i�deve pertencer ao intervalo dos �ndices do vetor: ((i�>=�0)�&&�(i�<�a.length)).

O Java como as linguagens C e C++ s�o linguagens com vetores zero-based, isto �, as posiç�es do vetor iniciam a numeraç�o a partir do valor�0, portanto, um vetor de tamanho�10�teria �ndices iniciados em�0�prosseguindo at� o�9.

Entenda como funciona o JAVA neste v�deo

Na declaraç�o de vetores dever�o ser fornecidas tr�s informaç�es:�1)�o nome do vetor,�2)�o n�mero de posiç�es do vetor (seu tamanho), e�3)�o tipo de dado que ser� armazenado no vetor. A declaraç�o de um vetor para "inteiros", de nome "vetor", em Java:

int�vetor[];�// declaraç�o do vetor

Podemos notar que as declaraç�es de vetores s�o semelhantes �s declaraç�es de vari�veis, os elementos sint�ticos que diferenciam as vari�veis do tipo vetor das outras vari�veis s�o os�colchetes. Embora declarado, o vetor n�o est� pronto para uso, sendo necess�rio reservar espaço para seus elementos (uma operaç�o de alocaç�o de mem�ria).

vetor =�new�int[10];�// alocaç�o de espaço para vetor

Na alocaç�o de espaço, n�o repetimos os colchetes e utilizamos o operador�new�(uma�palavra reservada da linguagem) para reservar espaço para 10 (dez) elementos do tipo�int.

As duas declaraç�es podem ser combinadas em um �nica, mais compacta:�

int�vetor[] =�new�int[10];�// declaraç�o combinada

Na linguagem Java um vetor � uma "classe, portanto, deve-se utilizar o m�todo�new , que ativa o�m�todo construtor�correspondente, para criar inst�ncias, ou exemplares, da classe vetor do tipo selecionado (int,�double,�float,�char,�String, entre outros), por exemplo:

a) declarando um vetor para armazenar 10 n�meros inteiros

int�nro =�new�int[10];

b) declarando um vetor para armazenar 10 valores do tipo real (ou monet�rios)

double�salario =�new�double[10];

c) declarando um vetor para armazenar o nome dos 12 meses do ano

String�mes =�new�String[12];

int�n = 10;�// tamanho do vetor int�v[] =�new�int[n];�// declaraç�o e alocaç�o de espaço para o vetor "v" int�i;�// �ndice ou posiç�o // processando os "n" elementos do vetor "v" for�(i=0; i<n; i++) { ��v[i] = i;�// na i-�sima posiç�o do vetor "v" armazena o valor da vari�vel "i" }

Representaç�o interna:

v[0]v[1]v[2]v[3]v[4]v[5]v[6]v[7]v[8]v[9]
0123456789

Aplicaç�o Java exemplificando a utilizaç�o do tipo de dados vetor:

import java.util.Scanner; public class Exemplo1 { public static void main(String[] args) { Scanner ler = new Scanner(System.in); int n = 10; // tamanho do vetor int v[] = new int[n]; // declaraç�o do vetor "v" int i; // �ndice ou posiç�o // Entrada de Dados for (i=0; i<n; i++) { System.out.printf("Informe %2do. valor de %d: ", (i+1), n); v[i] = ler.nextInt(); } // Processamento: somar todos os valores, definir o maior e o menor valor int soma = 0; int menor = v[0]; // v[0] = 1o. valor armazenador no vetor "v" int maior = v[0]; for (i=0; i<n; i++) { soma = soma + v[i]; if (v[i] < menor) menor = v[i]; if (v[i] > maior) maior = v[i]; } // Sa�da (resultados) System.out.printf("\n"); for (i=0; i<n; i++) { if (v[i] == menor) System.out.printf("v[%d] = %2d <--- menor valor\n", i, v[i]); else if (v[i] == maior) System.out.printf("v[%d] = %2d <--- maior valor\n", i, v[i]); else System.out.printf("v[%d] = %2d\n", i, v[i]); } System.out.printf("\nSoma = %d\n", soma); } }

Executando a aplicaç�o tem-se os seguintes resultados:

Como comparar valores de uma matriz com um vetor java
Como comparar valores de uma matriz com um vetor java

A classe�Math�cont�m diversos m�todos est�ticos (n�o exige uma inst�ncia da classe para utilizaç�o) destinados a operaç�es num�ricas, citando:

  • static double random(): retorna um valor, do tipo double, "aleat�rio" no intervalo de 0.0 at� 1.0;
  • static long round(double): retorna um n�mero do tipo long mais pr�ximo (ou arredondado) do valor do tipo double do argumento.

A utilizaç�o combinada dos m�todos "random" e "round" possibilita a geraç�o de n�meros aleat�rios, como por exemplo:

a[i] = (int)Math.round(Math.random() * 10); // gera um n�mero inteiro aleat�rio no intervalo de 0 at� 10

Entendendo a atribuiç�o:

  • Math.random() retorna um n�mero aleat�rio, do tipo double, no intervalo de 0.0 at� 1.0;
  • Math.random() * 10 tem como resultado um n�mero no intervalo de 0.0 at� 10.0;
  • Math.round(Math.random() * 10) retorna um n�mero do tipo long mais pr�ximo (ou arredondado) do resultado;
  • (int) faz a convers�o (ou coerç�o, em ingl�s "cast") do tipo long para o tipo int.
A aplicaç�o Java a seguir implementa o m�todo de ordenaç�o por seleç�o ou Selection Sort:
Como comparar valores de uma matriz com um vetor java

Inicializaç�o de vetores

Java permite a inicializaç�o de vetores no momento da declaraç�o, por exemplo:

String nome[] = {"Juca Bala", "Maria da Silva", "Marcos Paqueta"};

Isso significa que�nome[0]�ter� o valor�Juca Bala,�nome[1]�ter� o valor�Maria da Silva,�nome[2]�ter� o valor�Marcos Paqueta. Nota-se que n�o � necess�rio indicar o tamanho do vetor e tamb�m fazer a alocaç�o de espaço atrav�s do operador new. O tamanho do vetor ser� conhecido atrav�s do campo length como mostra a aplicaç�o a seguir:

Como comparar valores de uma matriz com um vetor java

A inicializaç�o de vetores na declaraç�o tamb�m permite indexar valores predefinidos como no caso das informaç�es relacionadas aos meses do ano. Veja um exemplo na pr�xima aplicaç�o Java:

Como comparar valores de uma matriz com um vetor java

Estrutura for aprimorada

Utilizada para percorrer os elementos de um vetor sem utilizar um contador:

for (par�metro: nomeDoVetor) { instruç�o; }

Onde "par�metro" tem duas partes: a) um tipo (deve corresponder ao tipo dos elementos no vetor), e b) um identificador, por exemplo: int nro.

O identificador representa os valores sucessivos do vetor nas sucessivas iteraç�es da instruç�o for. Veja um exemplo na pr�xima aplicaç�o Java:

Como comparar valores de uma matriz com um vetor java

Parte II

Como comparar valores de uma matriz com um vetor java

Veja abaixo a segunda parte do artigo - Agora as partes I a III foram compiladas em um �nico artigo. Bons estudos :)

Vetores em Java � Parte 2

<

Na primeira parte do artigo sobre Vetores em Java foram apresentadas as caracter�sticas b�sicas do tipo de dados vetor, como declarar e exemplos de vari�veis do tipo vetor e uma aplicaç�o Java exemplificando a utilizaç�o de vetores. Nesta segunda parte do artigo ser�o abordados: n�meros aleat�rios, inicializaç�o de vetores com valores predefinidos e a estrutura "for" aprimorada.

A classe Math cont�m diversos m�todos est�ticos (n�o exige uma inst�ncia da classe para utilizaç�o) destinados a operaç�es num�ricas, citando:

  1. static double random(): retorna um valor, do tipo double, "aleat�rio" no intervalo de 0.0 at� 1.0;
  2. static long round(double): retorna um n�mero do tipo long mais pr�ximo (ou arredondado) do valor do tipo double do argumento.

A utilizaç�o combinada dos m�todos "random" e "round" possibilita a geraç�o de n�meros aleat�rios, como por exemplo:

a[i] = (int)Math.round(Math.random() * 10); // gera um n�mero inteiro aleat�rio no intervalo de 0 at� 10

Entendendo a atribuiç�o:

  • Math.random() retorna um n�mero aleat�rio, do tipo double, no intervalo de 0.0 at� 1.0;
  • Math.random() * 10 tem como resultado um n�mero no intervalo de 0.0 at� 10.0;
  • Math.round(Math.random() * 10) retorna um n�mero do tipo long mais pr�ximo (ou arredondado) do resultado;
  • (int) faz a convers�o (ou coerç�o, em ingl�s "cast") do tipo long para o tipo int.
  • A aplicaç�o Java a seguir implementa o m�todo de ordenaç�o por seleç�o ou Selection Sort:

    Como comparar valores de uma matriz com um vetor java

    Java permite a inicializaç�o de vetores no momento da declaraç�o, por exemplo:

    String nome[] = {"Juca Bala", "Maria da Silva", "Marcos Paqueta"};

    Isso significa que nome[0] ter� o valor Juca Bala, nome[1] ter� o valor Maria da Silva, nome[2] ter� o valor Marcos Paqueta. Nota-se que n�o � necess�rio indicar o tamanho do vetor e tamb�m fazer a alocaç�o de espaço atrav�s do operador new. O tamanho do vetor ser� conhecido atrav�s do campo length como mostra a aplicaç�o a seguir:

    Como comparar valores de uma matriz com um vetor java

    A inicializaç�o de vetores na declaraç�o tamb�m permite indexar valores predefinidos como no caso das informaç�es relacionadas aos meses do ano. Veja um exemplo na pr�xima aplicaç�o Java:

    Como comparar valores de uma matriz com um vetor java

    Estrutura for aprimorada

    Utilizada para percorrer os elementos de um vetor sem utilizar um contador:

    for (par�metro: nomeDoVetor) { instruç�o; }

    Onde "par�metro" tem duas partes: a) um tipo (deve corresponder ao tipo dos elementos no vetor), e b) um identificador, por exemplo: int nro.

    O identificador representa os valores sucessivos do vetor nas sucessivas iteraç�es da instruç�o for. Veja um exemplo na pr�xima aplicaç�o Java:

    Como comparar valores de uma matriz com um vetor java

    Com este artigo conclu�mos nossa abordagem sobre vetores unidimensionais em Java.

    Parte III

    Como comparar valores de uma matriz com um vetor java

    Veja abaixo a segunda parte do artigo - Agora as partes I a III foram compiladas em um �nico artigo. Bons estudos :)

    Vetores em Java � Parte 3

    Nos dois primeiros artigos sobre Vetores em Java foram abordados os vetores unidimensionais. Neste terceiro e �ltimo artigo ser�o abordados os vetores bidimensionais ou matrizes.

    Vetores bidimensionais (ou matrizes)

    A linguagem Java n�o fornece vetores multidimensionais, mas como um vetor pode ser declarado e ter qualquer tipo de base, � poss�vel criar vetores de vetores (de vetores etc.), alcançando assim o mesmo efeito.

    A declaraç�o de um vetor bidimensional para inteiros, de nome "m" em Java:

    int m[][] = new int[2][4]; // matriz com 2 linhas X 4 colunas

    Representaç�o interna:
    m[0][0] m[0][1] m[0][2] m[0][3]
    m[1][0] m[1][1] m[1][2] m[1][3]

    Fazendo refer�ncia a um elemento do vetor bidimensional:

    m[0][2] = 0; // elemento da primeira linha, terceira coluna
    // ou ainda, terceiro elemento do primeiro vetor
    m[i][j] // elemento da i-�sima linha, j-�sima coluna

    Declarando vetores bidimensionais:

    1) Com express�es de criaç�o de vetores:

    int m[][] = new int[3][3]; // matriz quadrada: 3 linhas X 3 colunas

    2) Declarando e inicializando:

    int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

    equivale as seguintes atribuiç�es:

    // 1� linha: m[0][0] = 1; m[0][1] = 2; m[0][2] = 3; // 2� linha: m[1][0] = 4; m[1][1] = 5; m[1][2] = 6; // 3� linha: m[2][0] = 7; m[2][1] = 8; m[2][2] = 9;

    3) Com linhas de diferentes tamanhos:

    int m[][] = new int[2][]; // cria 2 linhas m[0] = new int[5]; // cria 5 colunas para a linha 0 m[1] = new int[3]; // cria 3 colunas para a linha 1

    4) Declarando e inicializando linhas de diferentes tamanhos:

    int m[][] = { {1, 2}, {4, 5, 6, 7, 8}, {9, 10, 11} };

    equivale as seguintes atribuiç�es:

    // 1� linha com duas colunas: m[0][0] = 1; m[0][1] = 2; // 2� linha com 5 colunas: m[1][0] = 4; m[1][1] = 5; m[1][2] = 6; m[1][3] = 7; m[1][4] = 8; // 3� linha com 3 colunas: m[2][0] = 9; m[2][1] = 10; m[2][2] = 11;

    Para conhecer os tamanhos dos vetores deve-se utilizar o campo length:

    a) m.length determina o n�mero de linhas

    b) m[i].length determina o n�mero de colunas da i-�sima linha

    Percorrendo vetores bidimensionais com linhas de diferentes tamanhos:

    int m1[][] = { {1, 2, 3, 4}, {5, 6} }; int m2[][] = { {1, 2}, , {4, 5, 6} }; m.length m[i].length determina o n�mero de linhas determina o n�mero de colunas da i-�sima linha int i, j; for (i=0; i<m.length; i++) { System.out.printf("%da. linha: ", (i+1)); for (j=0; j<m[i].length; j++) { System.out.printf("%d ", m[i][j]); } System.out.printf("\n"); }

    Resultado com "m1": 1a. linha: 1 2 3 4

    2a. linha: 5 6

    Resultado com "m2": 1a. linha: 1 2 2a. linha: 3

    3a. linha: 4 5 6

    Exemplos de aplicaç�es Java utilizando vetores bidimensionais ou matrizes

    import java.util.Scanner; public class Matriz1 { public static void main(String[] args) { Scanner ler = new Scanner(System.in); int i, j, m[][] = new int[2][4]; for (i=0; i<2; i++) { System.out.printf("Informe os elementos %da. linha:\n", (i+1)); for (j=0; j<4; j++) { System.out.printf("m[%d][%d] = ", i, j); m[i][j] = ler.nextInt(); } System.out.printf("\n"); } System.out.printf("\n"); for (i=0; i<2; i++) { System.out.printf("%da. linha: ", (i+1)); for (j=0; j<4; j++) { System.out.printf("%d ", m[i][j]); } System.out.printf("\n"); } } }

    Listagem 1- Alimentando e mostrando os valores de uma matriz 2 X 4.

    public class Matriz2 { public static void main(String[] args) { int n = 6; int i, j, m[][] = new int[n][n]; for (i=0; i for (j=0; j if (i == j) // diagonal principal m[i][j] = 0; else if ((i+j) == (n-1)) // diagonal secund�ria m[i][j] = 1; // sorteia um n�mero aleat�rio no intervalo de 2 at� 5 else m[i][j] = (int)(Math.round(Math.random() * 2) + 3); // } } for (i=0; i System.out.printf("%da. linha: ", (i+1)); for (j=0; j System.out.printf("%d ", m[i][j]); } System.out.printf("\n"); } } }

    Listagem 2- Matriz quadrada: diagonal principal e diagonal secund�ria.

    Listagem 1:

    Como comparar valores de uma matriz com um vetor java
    Como comparar valores de uma matriz com um vetor java

    Listagem 2:

    Como comparar valores de uma matriz com um vetor java
    Como comparar valores de uma matriz com um vetor java
    Refer�ncia
    Peter Jandl Junior. Introduç�o ao Java. S�o Paulo: Berkeley - 2002.

    Com este terceiro artigo conclu�mos nossa abordagem sobre vetores em Java.

    Obrigado e um abraço.

    Links �teis

    • Java 7:
      Site com informaç�es sobre o lançamento do Java 7
    • JavaFX:
      Site para fazer download de aplicaç�es JavaFX
    • JFXtras:
      Site do projeto JFXtras

    Saiba mais sobre Java ;)

    • O Que � JPA?:
      Dominar a persist�ncia de dados � uma necessidade indispens�vel aos programadores. Sem esse conhecimento nossas aplicaç�es n�o ter�o a capacidade de armazenar e recuperar os dados por ela manipulados.
    • Preparando o ambiente para programar em Java:
      Neste curso voc� aprender� a preparar seu ambiente para programar em Java. Veremos aqui o que � necess�rio instalar e como proceder para desenvolver aplicaç�es com essa linguagem.
    • Criando meu primeiro projeto no Java:
      Neste curso voc� aprender� a criar o seu primeiro programa com Java, e n�o, ele n�o ser� um simples �Hello, World!�. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento.