0

問題が解決しました。

私のクラスには2つのメソッドがあります。

private void retrieveDetails(){
List<String> details = File.getCredentials();
username = details.get(0);
pw = details.get(1);
}

private void checkCredentials() throws IOException {
        retrieveDetails();
        System.out.println("\nPlease enter USERNAME: ");
        String usersName = scan.next();

        System.out.println("\nPlease enter PASSWORD: ");
        String usersPW = scan.next();

        System.out.println("\nEntered details: " + usersName + ", " + usersPW);
        System.out.println("\nSystems details: " + userName + ", " + pw);

        if (usersName.equals(username) && usersPW.equals(pw)) {
            doWork();
        } else {
            System.out.println("Incorrect credentials");
        }
    }

以下を文字列が初期化される場所まで移動することで解決策を思いついたと思いました。

List<String> creds = File.getCredentials();

からの詳細がユーザーが入力したものと一致System.outするかどうかを確認するステートメントを作成しました。retrieveDetails()それらは一致しますが、システムが実行する代わりにelse句に移動する場合doWork();

4

4 に答える 4

0

まず、以下の sysout ステートメントにタイプミスがあるようです。

System.out.println("\nEntered details: " + usersName + ", " + usersPW);
System.out.println("\nSystems details: " + userName + ", " + pw); //Should be username

次に、文字列を比較しやすくするために、文字列をトリミングしたい場合があります。ファイルまたはコンソールから読み取られた文字列には、スペースやタブなど、不要で見つけにくい空の文字列が含まれている場合があります。これらは、文字列に対して .trim() メソッドを呼び出すことで削除できます。

したがって、代わりに次のコードを使用してみてください。

if (usersName.trim().equals(username.trim()) && usersPW.trim().equals(pw.trim())) {
}
于 2013-02-16T12:41:30.523 に答える
0

印刷されたものが同じ場合は、比較する前にトリミングしてみてください。例えば:

if (usersName.trim().equals(username.trim()) && usersPW.trim().equals(pw.trim())) {

于 2013-02-16T12:36:39.607 に答える
0

私が同様の問題を抱えているとき、私はこの簡単なトリックを行います:

文字列を印刷すると表示されない \n や \r などの文字がある場合があるため、比較している文字列のサイズを印刷します。

于 2013-02-16T12:34:46.210 に答える
0
usersName.equals(username) && usersPW.equals(pw).

私もこれらの問題に直面しました. これらの種類の等式は常にトリッキーです. 比較しようとしている文字列をトリミングしてみてください, また、これらの文字列を長さに基づいて比較できるかどうか.

if (usersName.trim().equalsIgnoreCase(username.trim()) && usersPW.trim().equalsIgnoreCase(pw.trim())) 

また
if (usersName.trim().length()==username.trim().length && usersPW.trim().length()==pw.trim().length))

于 2013-02-16T12:43:04.607 に答える