2010-08-26 5 views
1

J'ai un tableau composé de prénoms. J'ai une fonction de recherche qui cherche à travers les éléments du tableau et cela fonctionne bien. Cependant, pour plusieurs éléments d'un tableau, je ne peux pas savoir comment imprimer le nombre de résultats renvoyés. Par exemple, si "John" dans mon exemple est trouvé, ce que c'est, je ne sais pas comment montrer qu'il y avait plusieurs résultats trouvés. Quelqu'un s'il vous plaît aidez-moi. J'ai besoin de "compter" pour augmenter 1 fois pour chaque résultat trouvé. Voici mon code: `Recherche de plusieurs résultats de recherche dans un tableau en Java

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"); 
     } 
    } 
} 
+0

ne pas utiliser '' == pour comparer des chaînes en Java! Cela ne retournera vrai que si les deux chaînes sont la même instance, utilisez 'equals' pour comparer le contenu de la chaîne. Voir http://stackoverflow.com/questions/767372/java-string-equals-versus –

Répondre

1

Vous pouvez changer le foundIt booléen int count et l'incrément où vous définissez foundIt sur true.

donc quelque chose comme:

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

Simple, concis et ne fait les devoirs de personne pour eux! Réponse parfaite. –

+0

Crap, je viens d'ajouter l'exemple de code! Trop, Bill? – Lachlan

+0

ici même: n'utilisez pas '==' pour comparer les chaînes de Java! –

0

Essayez ce code:

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"); 
    } 
0

Vous pouvez ajouter les résultats à un ArrayList, il est un peu plus facile à comprendre alors. En outre, vous affectez la variable dans l'instruction if et vous utilisez l'opérateur == sur les chaînes, vous devez utiliser .equals().

Une autre chose qui s'est démarquée était l'étiquette dans le code, vous devriez rester loin d'eux, car ils nécessitent l'utilisation de la déclaration break tristement célèbre. Voir considered harmful. de Dijkstra

De cette façon, vous pouvez également parcourir les noms trouvés par la suite.

Voir l'exemple:

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
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()+""); 
    } 
} 
} 
Questions connexes