Damon4hire Posted November 7, 2009 at 09:05 PM Report Share #295070 Posted November 7, 2009 at 09:05 PM Boas pessoal. Ando a aprender a programar em java, e quero so perguntar se ha alguma instrução pre-definida no java, ou nalguma das bibliotecas incluidas que nos permita verificar se um determinado valor está ou não contido dentro de um determinado array, ou vou ter de criar um algoritmo próprio? Link to comment Share on other sites More sharing options...
Baderous Posted November 7, 2009 at 09:51 PM Report Share #295078 Posted November 7, 2009 at 09:51 PM 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 More sharing options...
vasco16 Posted November 7, 2009 at 10:24 PM Report Share #295081 Posted November 7, 2009 at 10:24 PM 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 More sharing options...
Damon4hire Posted November 7, 2009 at 10:36 PM Author Report Share #295083 Posted November 7, 2009 at 10:36 PM 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? Link to comment Share on other sites More sharing options...
Baderous Posted November 7, 2009 at 10:52 PM Report Share #295085 Posted November 7, 2009 at 10:52 PM 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? Sim. 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? Sim. Link to comment Share on other sites More sharing options...
vasco16 Posted November 7, 2009 at 11:44 PM Report Share #295088 Posted November 7, 2009 at 11:44 PM 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 More sharing options...
Damon4hire Posted November 8, 2009 at 12:41 AM Author Report Share #295096 Posted November 8, 2009 at 12:41 AM tks Link to comment Share on other sites More sharing options...
Damon4hire Posted November 8, 2009 at 06:24 PM Author Report Share #295153 Posted November 8, 2009 at 06:24 PM como posso comparar 2 arrays? directamente não funciona, será que tenho de fazer manualmente? Link to comment Share on other sites More sharing options...
Baderous Posted November 8, 2009 at 06:32 PM Report Share #295155 Posted November 8, 2009 at 06:32 PM Porque é que em vez de fazer essas perguntas não consultas a API de Java? Ela existe para alguma coisa... http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html Vê o método equals. Link to comment Share on other sites More sharing options...
Damon4hire Posted November 9, 2009 at 12:02 AM Author Report Share #295200 Posted November 9, 2009 at 12:02 AM epa desculpa nem reparei, tks Link to comment Share on other sites More sharing options...
Damon4hire Posted November 9, 2009 at 12:06 AM Author Report Share #295201 Posted November 9, 2009 at 12:06 AM 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 More sharing options...
vasco16 Posted November 9, 2009 at 02:44 PM Report Share #295248 Posted November 9, 2009 at 02:44 PM Algo deste genero? public static int exist (Int[]a, int v){ int count = 0; for (int i = 0; i < a.lenth; i++){ if (a==v){ count += 1; } } return count; } Este metodo devolve-te o numero de ocorrencias mas tambem serve para o que queres. 😉 Depois diz qualqer coisa. Link to comment Share on other sites More sharing options...
Damon4hire Posted November 9, 2009 at 06:24 PM Author Report Share #295299 Posted November 9, 2009 at 06:24 PM 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 More sharing options...
vasco16 Posted November 9, 2009 at 08:24 PM Report Share #295319 Posted November 9, 2009 at 08:24 PM 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 More sharing options...
Damon4hire Posted November 10, 2009 at 06:58 PM Author Report Share #295475 Posted November 10, 2009 at 06:58 PM 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 More sharing options...
Baderous Posted November 10, 2009 at 08:53 PM Report Share #295488 Posted November 10, 2009 at 08:53 PM Não percebi a tua dúvida, exemplifica. Link to comment Share on other sites More sharing options...
Damon4hire Posted November 10, 2009 at 09:58 PM Author Report Share #295498 Posted November 10, 2009 at 09:58 PM 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 More sharing options...
Baderous Posted November 10, 2009 at 10:40 PM Report Share #295507 Posted November 10, 2009 at 10:40 PM Então se calhar vais ter de optar por outra abordagem, porque não estou a ver como vais conseguir fazer isso ao querer utilizar esses métodos. Link to comment Share on other sites More sharing options...
Damon4hire Posted November 11, 2009 at 06:16 PM Author Report Share #295624 Posted November 11, 2009 at 06:16 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now