Ajudem Vetor em Java

6 respostas
L

Bom dia galera sou novo no fórum e preciso urgente saber como é que eu faço para ler um vetor e verificar
quantos numeros são iguais e imprimir:

Tipo

Vetor[]=[1,2,5,2,1]

1 duas vezes
2 duas vezes

Obrigado Gente

6 Respostas

_Renatu

OK. Isto tem cara de lição de casa, e perguntas desse tipo nao costumam ser bem vistas por aqui.

Você tem alguma dúvida mais específica?

Sabe acessar os membros do vetor?! sabe percorrer o vetor usando um for?

ViniGodoy

Oi.

Você cria um vetor primitivo assim:

int vetor[] = new int[5]; ou int vetor[] = new int[] {1,2,5,2,1};

Para acessar o elemento de um vetor, use a variável com índice:

vetor[0] = 10; //Toca o valor da primeira posição do vetor.

Para ler, também use o índice:

if (vetor[0] == 10) fazAlgumaCoisa();

Para obter o tamanho de um vetor, use o método length:

System.out.println(vetor.length);

Não é possível alterar o tamanho de um vetor. Para fazer isso, você deve criar um novo vetor, copiar os elementos do vetor antigo para o novo, substituir o vetor antigo pelo novo e deixar que o garbage collector apague o antigo. Para copiar elementos, você usa a função System.arraycopy.

Quanto ao seu exercício:

  1. Crie um novo vetor.
    2.Use cada posição desse novo vetor para contar um número. Por exemplo, a posição 0 conta quantos 0s já pareceram no seu vetor original. A posição 1 quantos números 1, etc…
  2. Faça o seu programa percorrer o vetor original (usando um for, for each ou while) e fazer a contagem.
  3. Imprima o resultado.
P

ViniGodoy:
Oi.

Você cria um vetor primitivo assim:

int vetor[] = new int[5]; ou int vetor[] = new int[] {1,2,5,2,1};

Para acessar o elemento de um vetor, use a variável com índice:

vetor[0] = 10; //Toca o valor da primeira posição do vetor.

Para ler, também use o índice:

if (vetor[0] == 10) fazAlgumaCoisa();

Para obter o tamanho de um vetor, use o método length:

System.out.println(vetor.length);

Não é possível alterar o tamanho de um vetor. Para fazer isso, você deve criar um novo vetor, copiar os elementos do vetor antigo para o novo, substituir o vetor antigo pelo novo e deixar que o garbage collector apague o antigo. Para copiar elementos, você usa a função System.arraycopy.

Quanto ao seu exercício:

  1. Crie um novo vetor.
    2.Use cada posição desse novo vetor para contar um número. Por exemplo, a posição 0 conta quantos 0s já pareceram no seu vetor original. A posição 1 quantos números 1, etc…
  2. Faça o seu programa percorrer o vetor original (usando um for, for each ou while) e fazer a contagem.
  3. Imprima o resultado.

Para isso ele terá q saber qaul eh o numero maior q ele tem no array e entao criar um array do tamanho do maior numero…
{1,2,3,999}
o cara vai ter um array mto grande …será q isso nao eh “gastar” memoria?

L

Então meu vetor é esse: v[]={1,5,8,-17,-24,5,-17,28}
Acho que é assim veja se estou certo:

int vetor[] = new int[] {1,5,8,-17,-24,5,-17,28};

for(int i=0; i<vetor.lenght[];i++)

if(i==vetor[i+1])

guarde=i

Será que é isso???
Depois imprimo o guarde?

ViniGodoy

pardal,

Só vai ocupar muito espaço se a matriz for muito dispersa (ou seja, tiver grande variação entre o menor e o maior elementos, e não tiver elementos "no meio"), caso contrário a solução ocupa menos memória. Como a pergunta é bem básica, imaginei que fosse um exercício de faculdade simples, e que o vetor não seria muito diferente daquele passado estaticamente.

A maneira mais simples de fazer isso numa matriz dispersa ou pouco conhecida é através de um map, como no exemplo abaixo:

import java.util.Map;
import java.util.TreeMap;

public class Contagem
{
    public static void main(String[] args)
    {
        int vetor[] = new int[] {1, 5, 8, -17, -24, 5, -17, 28};
        Map<Integer, Integer> mapa = new TreeMap<Integer, Integer>();

        for (int valor : vetor)
            mapa.put(valor, mapa.containsKey(valor) ? mapa.get(valor) + 1 : 1);

        for (Map.Entry<Integer, Integer> entry : mapa.entrySet())
            System.out.println(entry.getKey() + " aparece " + entry.getValue()
                    + " vezes.");
    }
}
L

Valeu galerinha resolvido.
Obrigado pela atenação.

Criado 29 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 6
Participantes 4