Dúvida iniciante Java

11 respostas
B
int vet[] = {3, 7, 6, 1, 9, 4, 2};

for(int valor: vet){

System.out.print(valor + " “);

}

System.out.println(”");

System.out.println(Qual elemento deseja encontrar?);

Scanner teclado = new Scanner(<a href="http://System.in">System.in</a>);

int user = teclado.nextInt();

int s = Arrays.binarySearch(vet, user);

if(s>0){

System.out.print("Encontrei o valor na posição " + s + " ");

}else{

System.out.println(Desculpe, não encontrei o elemento " + s + " !);

}

Boa noite, o código está rodando, porém não de forma correta! Não consigo entender, ele dá umas posições diferentes da que o usuário digitou.Alguém poderia me ajudar?

Aguardo retorno.abçs.

11 Respostas

igomes

Já leu o que o método binarySearch retorna ao menos ?
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

B

Mas eu peço número que está no vetor e ele me retorna número negativo da mesma forma.

igomes

Vou ter que colocar a documentação, que preguiça de ler em.

binarySearch(int[] a, int key)
Searches the specified array of ints for the specified value using the
binary search algorithm, binary search algorithm, binary search algorithm, binary search algorithm, binary search algorithm.

D

Olá

O binarySearch só funciona se o array estiver ordenado, leia a documentação do Arrays, lá tem como ordenar e explica como fazer o binarySearch funcionar corretamente.

lat94

Olá,
neste caso, voce teria que ordenar o vetor primeiro, utilizando um Arrays.sort() passando como parâmetro o vetor que será ordenado (ou pode usar uma método de ordenação alterativo, como quick sort, bubble sort, entre outros). Após isso, voce usa o Arrays.binarySearch(vetor[], chave)) passando o vetor e o valor a ser pesquisado. Sendo que retorna -1 caso nenhum valor seja encotrado.

B

Obrigado pela atenção! Vou tentar aqui e te digo :slight_smile:

B

Brigadão! Vou tentar aqui :smiley:

B

Ordenei o vetor, mas continua dando umas respostas sem noções :confused: , olhe aqui : http://prntscr.com/b9giie
Obrigado.

D

O Arrays.sort() não ordena, ele cria um novo array ordenado

então

int[] vetOrdenado = Arrays.sort(vet);
int s = Arrays.binarySearch(vetOrdenado, user);

System.out.println("vetor original: " + Arrays.toString(vet));
System.out.println("vetor ordenado: " + Arrays.toString(vetOrdenado));
A

Está certo, com duas observações: você ordenou o array, então precisa listar após o sort, e, o retorno do binarySearch é base 0 (o teste tem que ser >= 0).

B

Vou alterar aqui e te falo. Obrigado :slight_smile:

Criado 27 de maio de 2016
Ultima resposta 29 de mai. de 2016
Respostas 11
Participantes 5