Поиск нескольких результатов поиска в массиве на Java - PullRequest
1 голос
/ 26 августа 2010

У меня есть массив, который я сделал, который состоит из имен. У меня есть функция поиска, которая просматривает элементы массива, и она отлично работает. Тем не менее, для нескольких элементов массива я не могу узнать, как вывести, сколько результатов было возвращено. Например, если в моем примере найдено «Джон», то это не так, я не знаю, как показать, что было найдено несколько результатов. Кто-нибудь, пожалуйста, помогите мне. Мне нужно, чтобы "count" увеличивался в 1 раз для каждого найденного результата. Вот мой код: `

import java.util.*;

class Search {
    public static void main(String[] args) {

    Scanner search = new Scanner(System.in); 
       String[] firstName = new String[]{"John", "Thomas", "Samuel", "Chris", "Daniel", "Joey", "David", "Joshua", "Michael", "John"};
       Arrays.sort(firstName);
       System.out.print("Enter a search term: ");
       String name = search.next();

       int i;

       boolean foundIt = false;

    search:
       for (i = 0; i < firstName.length; i++) {
           if (firstName[i] == name) {
                   foundIt = true;

               }
           }


       if (foundIt = true){
            System.out.println("Your search term of " + name + " produced " + count + " search results");
       }

       else {
           System.out.println("Your search term of " + name + " did not return any results");
       }
   }
}

Ответы [ 4 ]

1 голос
/ 26 августа 2010

Вы можете изменить логическое значение foundIt на int count и увеличить его, если для параметра foundIt установлено значение true.

Так что-то вроде:

int count = 0;

search:
   for (i = 0; i < firstName.length; i++) {
       if (firstName[i] == name) {
               count++;
       }
   }


   if (count > 0){
        System.out.println("Your search term of " + name + " produced " + count + " search results");
   }

   else {
       System.out.println("Your search term of " + name + " did not return any results");
   }
0 голосов
/ 01 января 2014
private void searchName(){

Employee[]e=toEmployee();
for(int i=0;i<em.size();i++){
    if(e[i].getName().equals(tfs.getText())){
        tfi.setText(e[i].getId());
        tfn.setText(e[i].getName());
        tfh.setText(e[i].getHour()+"");
        tfr.setText(e[i].getRate()+"");
    }
}
}
0 голосов
/ 27 августа 2010

Вы можете добавить результаты в ArrayList, тогда это немного легче понять. Кроме того, вы присваиваете переменную в операторе if и используете оператор == для строк, вы должны использовать .equals().

Еще одна вещь, которая выделялась, была метка в коде, вы должны держаться подальше от них, поскольку они требуют использования печально известного оператора break. См. Дейкстры считается вредным.

Таким образом, вы также можете потом перебирать найденные имена.

См. Пример:

import java.util.ArrayList;
import java.util.Arrays;    
import java.util.List;
import java.util.Scanner;


class Search {
    public static void main(String[] args) {

        Scanner search = new Scanner(System.in);
        String[] firstNames = new String[]{
            "John",
            "Thomas",
            "Samuel",
            "Chris",
            "Daniel",
            "Joey",
            "David",
            "Joshua",
            "Michael",
            "John"};

        Arrays.sort(firstNames);
        System.out.print("Enter a search term: ");
        String name = search.next();

        List<String> results = new ArrayList<String>();
        for (String s : firstNames) {
            if (s.equals(name)) {
                results.add(s);
            }
        }


        if (results.size() > 0) {
            System.out.println("Your search term of " + name + " produced " + results.size() + " search results");
        } else {
            System.out.println("Your search term of " + name + " did not return any results");
        }
    }
}
0 голосов
/ 27 августа 2010

Попробуйте этот код:

    Scanner search = new Scanner(System.in);
    String[] firstName = {"John", "Thomas", "Samuel", "Chris", "Daniel", "Joey", "David", "Joshua", "Michael", "John"};
    Arrays.sort(firstName);
    System.out.print("Enter a search term: ");
    String name = search.next();

    int count = 0;
    for (String aFirstName : firstName) {
        if (aFirstName.equals(name)) {
            count++;
        }else if(count > 0){
            break;
        }
    }

    if(count > 0){
        System.out.println("Your search term of " + name + " produced " + count + " search results");
    }else{
        System.out.println("Your search term of " + name + " did not return any results");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...