web-dev-qa-db-ja.com

Java、文字列と文字列配列を比較する方法

私はここでしばらく検索しましたが、その答えを見つけることができませんでした。

基本的に、大学からのこの割り当てには配列を使用する必要があります。そして、入力(文字列でもある)が文字列配列内に保存されているものと一致することを確認することになっています。

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

    }
}

これが以前に尋ねられた場合は謝罪しますが、それを逃しただけで、二重の質問であれば削除します。

16
nico_c

配列に特定の値が含まれているかどうかを確認したいと思いますか?その場合は、containsメソッドを使用します。

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

今、あなたは「この文字列の配列はこの文字列と等しい」と言っているようですが、もちろんそうではありません。

おそらく、ループを使用して文字列の配列を繰り返し処理し、それぞれをチェックして入力文字列と等しいかどうかを確認する必要がありますか?

...またはあなたの質問を誤解しますか?

3
f1dave

ループを使用してcodes配列を反復処理し、equals()からusercodeであるかどうかを各要素に問い合わせます。 1つの要素が等しい場合、そのケースを停止して処理できます。どの要素も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"
2
Óscar López

あなたの質問を正しく理解していれば、次のことを知りたいようです。

String配列にusercode(入力されたばかりのString)が含まれているかどうかを確認するにはどうすればよいですか?

同様の質問については here をご覧ください。以前の回答で指摘された解決策を引用しています。これがお役に立てば幸いです。

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

配列を使用する代わりに、ArrayListを直接使用し、containsメソッドを使用して、ArrayListで渡す値を確認できます。

1
Ashok Patel