2

入力された値が既に配列にある値と一致するかどうか、およびそれが「有効」を返すかどうかを確認しようとしています。これは非常に簡単だと思いますが、これを機能させることはできません:

 public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);
        String[] accountNums = { "5658845", "8080152", "1005231", "4520125", "4562555",
                                 "6545231", "7895122", "5552012", "3852085", "8777541", 
                                 "5050552", "7576651", "8451277", "7881200", "1302850", 
                                 "1250255", "4581002" };

        String newAccount;
        String test = "Invalid";

        newAccount = keyboard.next();

        for (int i = 0; i < accountNums.length; i++)
        {        
            if(newAccount == accountNums[i])
            {
                test = "Valid";
            }
        }

        System.out.println(test);
    }
}

助けてくれてありがとう(そして忍耐)

4

4 に答える 4

6

equals メソッドを使用します。ここで理由を確認してください。

if (newAccount.equals(accountNums[i]))
于 2013-03-04T04:02:24.067 に答える
3

ジャヤモハンの答えは正しく機能していますが、文字列ではなく整数を使用することをお勧めします。CPU は文字列を処理するよりもはるかに簡単に数値 (整数) を処理するため、より効果的なアプローチです。

この場合に行う必要があるのは、s ではなく s に変更し、newAccount初期化からすべての引用符を削除することです。を呼び出す代わりに、整数を返すを呼び出すことができます。if文はそのままでいいです。accountNumsintStringaccountNumskeyboard.next()keyboard.nextInt()

于 2013-03-04T04:06:25.757 に答える
1

なぜ配列を使用しているのですか?

List<String> accountNums = Arrays.asList( "5658845", "8080152", "1005231", "4520125", "4562555",
     "6545231", "7895122", "5552012", "3852085", "8777541", 
     "5050552", "7576651", "8451277", "7881200", "1302850", 
     "1250255", "4581002" );

String test = "Invalid";

次に、これが必要です(ループなし):

if (accountNums.contains(newAccount)) {
    test = "Valid";
}

さらに、読みやすく、理解しやすくなっています。

于 2013-03-04T04:46:41.703 に答える
0

== で文字列を比較することはできません。.equals() を使用する必要があります。

于 2014-09-13T00:08:06.153 に答える