2

弦反転ツールを自作する練習中です。以上の学習プロセスを簡単なアプリケーションで使用しました。しかし..
Eclipseでコードを実行すると、単語が= racecarであり、逆になっている場合でも、= racecar (単語が逆)になります。else が表示されます.. word と reverse は決して同じではないことを教えてくれます..しかし..その場合は同じですか? 右?アドバイスをください、これは非常に残念です。ありがとうございました。

import java.util.Scanner;

public class Main {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args){

    System.out.println("Please enter a word, I'll show it reversed ");
    System.out.println("and tell you if it is read the same forward and backward(A Palindrome)!: ");
        String word = sc.nextLine();
        String reverse = reverse(word);

        if (reverse == word){
            System.out.println("Your word: " + word + " backwards is " + reverse + ".");
            System.out.println("Your word is read the same forward and backward!");
            System.out.println("Its a Palindrome!");
        }

        else {
            System.out.println("Your word: " + word + " backwards is " + reverse + ".");
            System.out.println("Your word is not read the same forward and backward!");
            System.out.println("Its not a Palindrome!");
        }



    }

    public static String reverse(String source){

        if (source == null || source.isEmpty()){
            return source;
        }

        String reverse = "";

        for(int i = source.length() -1; i >= 0; i--){
            reverse = reverse + source.charAt(i);
        }

        return reverse;
    }

}
4

4 に答える 4

10

文字列を比較するには、常にString#equalsを使用します。==参照が等しいかどうかを比較しますが、格納方法が原因で等しい文字列を比較するのには実際には機能しません。

if (reverse.equals(word))
于 2013-07-24T01:56:17.990 に答える
3

if が表示されない理由は、文字列に == を使用できないためです。あなたは math/int/double/float などの比較でのみそれを行うことができます

文字列比較の場合、使用する必要があります

 equals(String s) 

または、大文字と小文字がまったく同じである必要がない単語の場合

 equalsIgnoreCase(String s)
于 2013-07-24T01:56:57.913 に答える
1

Java では、オブジェクト (文字列を含む) は参照 (メモリ内の位置) として格納されます。

演算子は==、実際の文字列が等しいかどうかではなく、これらの参照が等しいかどうかを確認します。

幸いなことに、Java には回避策があります。equals(String)両方の文字列の内容が同じ場合、文字列メソッドは true を返します。ではなく、文字列にこれを使用し==ます。

于 2013-07-24T01:59:48.710 に答える