Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
Searching an array with user input and printing all elements that have this value

I'm trying to search an array for a certain value and display all the elements which contain this value in java. For example, the user selects the number 5, there are 3 projects stored in the array with this value so all 3 of those will be printed out. My code is compiling ok, but when I run it, it jumps to the else statement, even if I am inputting a number that is in the array.. Any help would be amazing. Here's my code:

                case 3:
                //display all elements with the same state
                //get number user wishes to search for
                
                boolean found = false;
                 Scanner input = new Scanner(System.in);
                 System.out.print("Please enter the number you wish to search for");

                 //read user input
                 num = input.nextInt();

                 //traverse array
                 int k = 0;
                 for(k=0; k < myMonths.length; k++){
                     if(myMonths[index] == num){
                         found = true;
                         break;}
                     if(found){System.out.println(k);}

                     else{System.out.println("not found");}
                 }
                break;

Here's the array:

            //Menu loop
            int myMonths[] = new int[5];
            int index = 0;
            int num;
            while(choice !=6){


                switch (choice){
                case 1:
                //int n = number of projects
                int n = 1;
                Scanner sc = new Scanner(System.in);
                System.out.println("How many months was your project?");


                for(int i=0; i<1; i++){
                    int a = sc.nextInt();

                    //if months is lesser than 2/greater than 12
                    if((a < 2) || (a > 12)){
                        System.out.println("Please enter an amount between 2 and 12 months");}

                   //if months is between 2 and 12 add it to the array

                    else{myMonths[index++] = a;} }
                break;
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

First, you should be using k instead of index. Second, you shouldn't be printing "not found" (or testing for that) on every iteration. You should limit variable scope as much as practical. And you also mention wanting to find all matching indices so you shouldn't terminate the loop prematurely; I think you wanted something like

//assume the value isn't present.
boolean found = false;
//read user input
int num = input.nextInt();

//traverse array
for(int k = 0; k < myMonths.length; k++) {
    if (myMonths[k] == num){
        found = true;
        System.out.println(k); // don't break or the loop ends early.
    }
}
//this test can only be done after you iterate **all** values.
if (!found) {
    System.out.println("not found");
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda