Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
antes de tudo, não quero que ninguém resolva nada para mim, o que vou mostrar aqui é um exercício que foi me passado e que eu já tentei resolver, mas o êxito não foi 100%, enfim:
Crie um método estático que receba como argumentos um vetor de inteiros e um inteiro, retornando a posição deste naquele. Caso o inteiro valor fornecido não faça parte do vetor, retorne -1.
Bom galera, eu comecei meu método estático assim:
public class RecebeArgumentos {
public static int argumentosRecebe(int[] a, int v){
for(int i=0; i<a.length; i++)
if(a[i]==v){
return i;
} else{
return -1;
}
return v;
}
}
e minha classe pública assim:
import java.util.Scanner;
public class TestarRecebeArgumentos {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] v = new int[5];
int a;
for (int i=0; i<v.length; i++){
System.out.print("Digite um número inteiro qualquer: ");
v[i] = scan.nextInt();
}
System.out.print("Digite um número: ");
a = scan.nextInt();
int resultado;
resultado = RecebeArgumentos.argumentosRecebe(v, a);
System.out.println(resultado);
}
}
Quando eu digito um número que não existe no vetor, ele me retorna:
Digite um número inteiro qualquer: 1Digite um número inteiro qualquer: 2
Digite um número inteiro qualquer: 3
Digite um número inteiro qualquer: 4
Digite um número inteiro qualquer: 5
Digite um número: 6
-1
Quando eu digito um número que existe no vetor, ele me retorna:
Digite um número inteiro qualquer: 1Digite um número inteiro qualquer: 2
Digite um número inteiro qualquer: 3
Digite um número inteiro qualquer: 4
Digite um número inteiro qualquer: 5
Digite um número: 2
-1
Obs: Se o número que eu digitar for 1, ele me retorna 0, qualquer outro existente ele me retorna -1
Bom galera, a dúvida é essa, por que ele está retornado sempre -1, se o número que eu digito existe no vetor que eu acabei de criar.
Desde já, grato!
@Giovanni Ritchie
Obrigado pela atenção, acho que você quis dizer com o "return -1" fora da condição if, não?
Enfim, fiz com ela fora e deu certo, em partes:
public class RecebeArgumentos {
public static int argumentosRecebe(int[] a, int v){
for(int i=0; i<a.length;++i) {
if(a[i]==v)
return i;
}
return -1;
}
}
Quando eu digito um número que não existe no vetor, ele me retorna: -1 (Certo)
Quando eu digito um número que existe no vetor, ele me retorna: O índice desse número no vetor.
Gostaria de saber como ele não retornar o índice, mas sim uma mensagem de que existe. Por que se eu troco o "return i" do bloco if, e coloco uma mensagem, o programa roda normal, lê a mensagem e depois retorna o -1. Como se a mensagem fizesse o programa executar o "return -1" do final
Voce nao pode retornar uma mensagem num metodo do tipo int. Teras que mudar o tipo de retorno do metodo fazendo-o retornar a mensagem desejada.
public class RecebeArgumentos {
public static String argumentosRecebe(int[] a, int v){
for(int i=0; i<a.length;++i) {
if(a[i]==v)
return "Mensagem de valor encontrado";
}
return "Mensagem de valor nao encontrado";
}
}Soh uma dica: Isso nao lhe dara beneficio nenhum. Mas eh do jeito que o Vergil mostrou acima!
E mais, tenha sempre em mente q você so pode retornar 1 valor, nao existe em hipotese nenhum essa possibilidade. A posicao nesse caso se mostra mais valioso, pq permite você acessar o elemente no array posteriormente(logico, pq ele representa a sua posicao) e sendo diferente de -1 você sabe q foi encontrado, entao pode usar p gerar a mensagem q deseja "encontrou"|"nao encontrou"
:joia:
Valeu Vergil e Giovanni Ritchie pela atenção!
Resolvido.
O problema esta exatamente na sua estrutura de decisao...
} else{Do jeito q esta, sempre q o elemento procurado nao estiver na primeira posicao sera retornado -1. E tem outra coisa, nao existe necessidade de você retorna v, porq v representa o numero e nao a posicao, você deve mudar para isso:
Repare que ele vai procura o elemente no array, se encontrar vai retornar a posicao( logo return -1 nao sera executado, pq ele sai logo da funcao), se nao encontrar simplesmente retorna -1
Abraco :joia: