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

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

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

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

Я создал следующий пример кода для 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%5sn", 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!");
        }

    }
}

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

5 ответов


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

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

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

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

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


цикл codes массив, использующий цикл, запрашивающий каждый из элементов, если это equals() to 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"

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

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

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


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