2017-07-25 2 views
1

J'écris un programme pour lire un fichier et vérifier chaque ligne pour un mot spécifique. J'ai ce code ci-dessous, mais le code n'exécute pas la 'if statement' et je ne sais pas pourquoi. Le fichier appelé « scores.txt » se compose de:méthode equals() ne détecte pas le mot du fichier

Andy 60 
Bob 87 
Alice 59 

Voici ce que j'ai jusqu'à présent:

public static void scoreCheck() { 
     Scanner scanner = new Scanner("scores.txt"); 
     int lineNum = 0; 

     while (scanner.hasNextLine()) { 
      String line = scanner.nextLine(); 
      lineNum++; 

      if(line.equalsIgnoreCase("bob")) { 
       System.out.println("user Found On: " + lineNum); 
      } 
     } 
    } 

Je suis en train de le faire pour trouver la ligne que le bob utilisateur existe sur. Veuillez suggérer.

Merci

Répondre

1

un Scanner construit avec un StringlitqueString. Vous devez changer

Scanner scanner = new Scanner("scores.txt"); 

à

Scanner scanner = new Scanner(new File("scores.txt")); 

En outre, le line n'est pas "Bob" - donc vous voudrez probablement changer

if(line.equalsIgnoreCase("bob")) { 

à quelque chose comme

if(line.toLowerCase().startsWith("bob")) { 

ou vous pouvez utiliser un Pattern et matches() (qui teste une correspondance complète). Comme,

Pattern p = Pattern.compile("bob", Pattern.CASE_INSENSITIVE); 
if (p.matcher(line).matches()) { 
    // ... 
+0

Merci! Cela semble fonctionner mais ne fonctionne que lorsque l'utilisateur entre "bob" lors de l'invite, mais ne fonctionne pas lorsque l'utilisateur entre "Bob" est-il une méthode ignoreCase? Merci – SakshamInABox

+0

'if (line.toLowerCase(). StartsWith (" Bob ".toLowerCase())) {' –

+0

@SakshamInABox Vous pouvez également utiliser un 'Pattern'. Voir éditer. –

3

Sur la deuxième fois que les boucles, line aura une valeur de Bob 87, juste avant de vérifier line.equalsIgnoreCase("bob"), et même si nous ignorons le cas, « bob » est pas égal à « bob 87 »

ce que vous devez faire dans votre état est line.toLowerCase().startsWith("bob")

+0

Belle solution au problème d'OP. – CodingNinja