2

ユーザーの入力から派生した char 値の位置を見つける必要があります。しかし、検索する正確な文字を指定しないと、indexOf メソッドが機能しないようです。しかし、char 値はユーザーの入力から派生するため、正確な値を入力することはできません。必要な方法で indexOf を使用する方法はありますか?

public class pg2a {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        String host;
        System.out
                .println("Please enter your sequence (any length, any characters):");
        host = keyboard.nextLine();
        System.out.println("Now enter a 3 character sequence:");
        String candidate;
        candidate = keyboard.nextLine();

        int length = candidate.length();
        char a = candidate.charAt(0);
        char b = candidate.charAt(1);
        char c = candidate.charAt(2);
        int i = candidate.indexOf(a);
        int j = candidate.indexOf(b);
        int k = candidate.indexOf(c);

        if (length == 3) {
            if (i == -1)
                System.out
                        .println("The 3 character sequence you entered is not a subsequence of your sequence.");
            else
                System.out.println("Let's go!");
        } else {
            System.out
                    .println("The sequence you entered is not a 3 character sequence.");
        }
    }
}

`

4

3 に答える 3

1

あなたが持っているコードは、i を 0 に、j を 1 に、c を 2 に簡単に設定する必要があります (それらはすべて異なる文字であると仮定します)。「最初の文字のインデックスをください」と言うと、2 番目と 3 番目の文字が表示されます。host.indexOf(a)などをするつもりだったと思います。

しかし、あなたが望むことを行うためのより簡単な方法があります。それは単に を使用することhost.indexOf(candidate)であり、候補がホストにある場合は > -1 を返す必要があります。

于 2013-02-20T04:22:09.653 に答える
0

あなたの問題を正しく理解している場合、次の行:

int i = candidate.indexOf(a);
int j = candidate.indexOf(b);
int k = candidate.indexOf(c);

する必要があります

int i = host.indexOf(a);
int j = host.indexOf(b);
int k = host.indexOf(c);

a がホストにあるかどうかを調べたい。a は常に候補になります。また、b と c ではなく、a がシーケンス内にあるかどうかのみをチェックしています。

于 2013-02-20T04:22:45.067 に答える
0

あなたの目標がhost含まれているかどうかを確認することだけである場合は、メソッドcandidateの使用を考えることができますcontains

boolean isSubstring = host.contains(candidate);

開始位置にインデックスが必要な場合candidateは、次のようにして目的を達成する必要があります。

int startIndex = host.indexOf(candidate);
于 2013-02-20T04:33:11.320 に答える