web-dev-qa-db-fra.com

Java, comment comparer des chaînes avec des tableaux de chaînes

Je cherche ici depuis un certain temps mais je n'ai pas pu trouver la réponse.

Je suis fondamentalement tenu d'utiliser un tableau pour cette mission du collège. Et puis je suis censé vérifier que l'entrée (qui est également une chaîne) correspond à tout ce qui est stocké dans le tableau String.

Je sais que l'on peut facilement comparer des chaînes en utilisant la méthode .equals (). Cependant, la même méthode ne fonctionne pas avec le tableau String.

J'ai créé l'exemple de code suivant dans le but de StackOverflow afin que vous puissiez l'utiliser pour me l'expliquer, si vous le souhaitez.

Qu'est-ce que je fais mal?

import Java.util.Scanner;

class IdiocyCentral {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        /*Prints out the welcome message at the top of the screen*/
        System.out.printf("%55s", "**WELCOME TO IDIOCY CENTRAL**\n");
        System.out.printf("%55s", "=================================\n");

        String [] codes = {"G22", "K13", "I30", "S20"};

        System.out.printf("%5s%5s%5s%5s\n", codes[0], codes[1], codes[2], codes[3]);
        System.out.printf("Enter one of the above!\n");

        String usercode = in.nextLine();

        if (codes.equals(usercode)) {
            System.out.printf("What's the matter with you?\n");
        }
        else {
            System.out.printf("Youda man!");
        }

    }
}

Je m'excuse si cela a déjà été demandé et je l'ai manqué, si c'est une double question, je vais le supprimer.

16
nico_c

Je suppose que vous voulez vérifier si le tableau contient une certaine valeur, oui? Si tel est le cas, utilisez la méthode contains.

if(Arrays.asList(codes).contains(userCode))
47
Peter Olson

En ce moment, vous semblez dire "ce tableau de chaînes est-il égal à cette chaîne", ce qui bien sûr ne le serait jamais.

Peut-être devriez-vous penser à parcourir votre tableau de chaînes avec une boucle et à vérifier chacune pour voir si elles sont égales () à la chaîne entrée?

... ou ai-je mal compris votre question?

3
f1dave

Parcourez le tableau codes à l'aide d'une boucle, en demandant à chacun des éléments s'il s'agit de equals() à usercode. Si un élément est égal, vous pouvez arrêter et gérer ce cas. Si aucun des éléments n'est égal à usercode, faites ce qui convient pour gérer ce cas. En pseudocode:

found = false
foreach element in array:
  if element.equals(usercode):
    found = true
    break

if found:
  print "I found it!"
else:
  print "I didn't find it"
2
Óscar López

Si je comprends bien votre question, il semble que vous souhaitiez savoir ce qui suit:

Comment vérifier si mon tableau String contient usercode, le String qui vient d'être entré?

Voir ici pour une question similaire. Il cite des solutions qui ont été signalées par des réponses précédentes. J'espère que ça aide.

1
blahman
import Java.util.Scanner;
import Java.util.*;
public class Main
{
  public static void main (String[]args) throws Exception
  {
    Scanner in = new Scanner (System.in);
    /*Prints out the welcome message at the top of the screen */
      System.out.printf ("%55s", "**WELCOME TO IDIOCY CENTRAL**\n");
      System.out.printf ("%55s", "=================================\n");

      String[] codes =
    {
    "G22", "K13", "I30", "S20"};

      System.out.printf ("%5s%5s%5s%5s\n", codes[0], codes[1], codes[2],
             codes[3]);
      System.out.printf ("Enter one of the above!\n");

    String usercode = in.nextLine ();
    for (int i = 0; i < codes.length; i++)
      {
    if (codes[i].equals (usercode))
      {
        System.out.printf ("What's the matter with you?\n");
      }
    else
      {
        System.out.printf ("Youda man!");
      }
      }

  }
}
1
saieesh

Au lieu d'utiliser un tableau, vous pouvez utiliser directement le ArrayList et utiliser la méthode contains pour vérifier la valeur que vous avez transmise avec le ArrayList.

1
Ashok Patel