Jump to content

Arrays


Damon4hire

Recommended Posts

Para um array podes usar a classe Arrays e os métodos static sort e binarySearch para fazer uma pesquisa binária no array pelo elemento pretendido:

import java.util.*;

public class Teste {
public static void main(String[] args) {
	int[] vector = new int[10];
	int i;
	for (i=0;i<10;i++)
		vector[i]=i+1;
	Arrays.sort(vector);
	int index = Arrays.binarySearch(vector,3);
	System.out.println("Elemento encontrado no índice: " + index);
}
}

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html

Se quiseres, podes dar uma vista de olhos na classe ArrayList.

Link to comment
Share on other sites

Para um array podes usar a classe Arrays e os métodos static sort e binarySearch para fazer uma pesquisa binária no array pelo elemento pretendido:

import java.util.*;

public class Teste {
public static void main(String[] args) {
	int[] vector = new int[10];
	int i;
	for (i=0;i<10;i++)
		vector[i]=i+1;
	Arrays.sort(vector);
	int index = Arrays.binarySearch(vector,3);
	System.out.println("Elemento encontrado no índice: " + index);
}
}

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html

Se quiseres, podes dar uma vista de olhos na classe ArrayList.

Eu tambem ando a aprender Java mas nao podia fazer um for com um if la dentro para verificar se o valor está ou nao contido no vector?

Link to comment
Share on other sites

o problema e k n ha nenhuma instrução especifica que se possa por no if.

Mas com o binarysearch se ele n estiver n array, devolve indice negativo, certo?

Não podes fazer algo do genero:

int valoraprocurar = 3;

For (int i = 0; i < v.lenght ; i++) {

if (i = valoraprocurar)

system.out.println ("tem o valor na posicao" + i);

}

Link to comment
Share on other sites

Não podes fazer algo do genero:

int valoraprocurar = 3;

For (int i = 0; i < v.lenght ; i++) {

if (i = valoraprocurar)

system.out.println ("tem o valor na posicao" + i);

}

n percebeste, eu tinha 1 array / vector (como lhe quiseres chamar) d numeros inteiros

e queria saber se um determinado numero estava dentro desse array,

porque o meu programa n podia repetir os numeros.

mas tks n mesma

Link to comment
Share on other sites

antes assim:

Arrays.sort(aposta);

while ( Arrays.binarySearch(aposta, a = geraNumero(numeros)) >= 0 ){}

ele continua a gerar 1 numero até o indice ser negativo, porque se o indice for negativo,

quer dizer k não o encontra dentro do array, logo significa que se o introduzir dentro d array,

tenho a certeza k não é repetido

(a é var inteira , geraNumero() gera números aleatórios e aposta é um array)

Link to comment
Share on other sites

antes assim:

Arrays.sort(aposta);

while ( Arrays.binarySearch(aposta, a = geraNumero(numeros)) >= 0 ){}

ele continua a gerar 1 numero até o indice ser negativo, porque se o indice for negativo,

quer dizer k não o encontra dentro do array, logo significa que se o introduzir dentro d array,

tenho a certeza k não é repetido

(a é var inteira , geraNumero() gera números aleatórios e aposta é um array)

Ja aprendi mais qualquer coisa xD desconhecia esse metodo (binarySearch) .. mas ate faz sentido, nao estava era a perceber bem o que querias..

Link to comment
Share on other sites

uma pergunta sobre a utilização do binarysearch.

se eu utilizar o binarysearch num ciclo que vai introduzindo valores no array,

tenho de estar a ordenar por cada valor que é introduzido no array, se bem percebi.

mas se já tiver inicializado o array primeiro, qualquer valor introduzido, apos o sort,

passa para as ultimas posições do array para ficar ordenado por ordem ascendente, certo?

Link to comment
Share on other sites

eu tenho um array [aposta] que vai guardar numeros inteiros, mas não posso repetir os numeros la guardados. O que fiz foi:

(geraNumero vai gerar numero aleatoriamente, a é variavel inteira)

Arrays.sort(aposta);

while( Arrays.binarysearch( aposta, a = geraNumero()  >= 0 ){}

Assim ele gera numero até dar negativo, supostamente nao esta la, entao nao se repete.

Mas a questão é o Arrays.sort() vai ordenar por ordem ascendente, e o array tem todas as posições a zero assim muda os numeros gerados para as ultimas posições, e esse é o problema.

Eu não quero que os numeros mudem de posição.

Link to comment
Share on other sites

que tal assim?

opiniões por favor.

public void gerarAposta()

    {

        int a = 0;

        for ( int i = 0; i < 7; i++ )

        {

            if ( i < 5 )

                while( verifica(a = geraNumero(50), 0, i) ){}

            else

                while( (verifica(a = geraNumero(9), 5, i)) ){}

            aposta = a;

        }

    }

   

    private boolean verifica(int number, int inicio, int indice)

    {

        int i = 0;

        for (int b = inicio; b < indice + 1; b++)

            if ( number == aposta ) i++;

        if ( i > 0 ) return true;

        else return false;

    }

(  aposta = new int[7];  )

a ideia é gerar numeros aleatorios de 1 a 50 para as primeiras 5 posicões do array aposta, sem os repetir.

E para as 2 últimas posições do array aposta são 2 numeros aleatorios de 1 a 9 sem serem repetidos entre eles mesmos, podendo, no entanto, repetir com os 5 anteriores.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.