GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Ajudem Vetor em Java


#1

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


#2

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?


#3

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...
3. Faça o seu programa percorrer o vetor original (usando um for, for each ou while) e fazer a contagem.
4. Imprima o resultado.


#4

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?


#5

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; iif(i==vetor[i+1])
guarde=i

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


#6

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.");
}
}

#7

Valeu galerinha resolvido.
Obrigado pela atenação.


#8