Java, как сравнить строки со строковыми массивами

Я искал здесь какое-то время, но не смог найти ответ на него.

Мне в основном требуется использовать массив для этого задания из колледжа. И тогда я должен проверить, что вход (который также является String) соответствует любому, что хранится в массиве String.

Я знаю, что можно легко сравнить строки с помощью метода .equals(). Однако тот же метод не работает с массивом String.

Я создал следующий пример кода для StackOverflow, чтобы вы могли его использовать, чтобы объяснить это мне, если хотите.

Что я делаю неправильно?

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 the matter with you?\n");
        }
        else {
            System.out.printf("Youda man!");
        }

    }
}

Извиняюсь, если это было задано раньше, и я просто пропустил его, если его двойной вопрос, я его удалю.

Ответ 1

Я предполагаю, что вы хотите проверить, содержит ли массив определенное значение, да? Если это так, используйте метод contains.

if(Arrays.asList(codes).contains(userCode))

Ответ 2

Прямо сейчас вы, кажется, говорите: "Этот массив строк равен этой строке", что, конечно, никогда не будет.

Возможно, вам стоит подумать об итерации по вашему массиву строк с помощью цикла и проверить каждый из них, чтобы убедиться, что они равны() с введенной строкой?

... или я неправильно понимаю ваш вопрос?

Ответ 3

Итерации по массиву codes с использованием цикла, запрашивающего каждый из элементов, если он equals() - usercode. Если один элемент равен, вы можете остановить и обработать этот случай. Если ни один из элементов не равен usercode, выполните соответствующие действия для обработки этого случая. В псевдокоде:

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"

Ответ 4

Если я правильно понял ваш вопрос, вам нужно знать следующее:

Как проверить, содержит ли мой массив String usercode, String только что введенный?

См. здесь для аналогичного вопроса. Он цитирует решения, которые были указаны в предыдущих ответах. Надеюсь, это поможет.

Ответ 5

Вместо использования массива вы можете напрямую использовать ArrayList и можете использовать метод содержит, чтобы проверить значение, которое у вас проходит с помощью ArrayList.

Ответ 6

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 the matter with you?\n");
      }
    else
      {
        System.out.printf ("Youda man!");
      }
      }

  }
}