Java初学者计划帮助(如果,否则问题)

时间:2013-07-24 01:53:58

标签: java if-statement

我正在练习制作自己的String逆转工具。 我在一个简单的应用程序中使用该方法的学习过程。 但..
当我在Eclipse中运行我的代码时 即使单词是=赛车 并且逆转变成=赛车(字颠倒)。 其他显示.. 告诉我这个词和反面永远不会相等......但是......那个案子是什么?对? 请给我一些建议,这真是太无聊了。 谢谢。

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 个答案:

答案 0 :(得分:10)

始终使用String#equals来比较字符串。 ==将比较引用是否相等,由于它们的存储方式而不能真正用于比较相等的字符串。

if (reverse.equals(word))

答案 1 :(得分:3)

为什么你没有得到if出现的原因,因为你不能使用==作为字符串。你只能在math / int / double / float等比较中做到这一点

对于字符串比较,您必须使用

 equals(String s) 

或不必完全相同的词汇

 equalsIgnoreCase(String s)

答案 2 :(得分:3)

你应该用equals方法比较两个字符串,字符串是一个对象,这是一个引用,equals()方法会比较两个字符串的内容,但是==会比较两个字符串的地址

所以,你应该这样写:

if (reverse.equals(word))

答案 3 :(得分:1)

在Java中,对象(包括字符串)存储为引用 - 它们在内存中的位置。

==运算符检查这些引用是否相等,而不是实际的字符串相等。

幸运的是,Java有一个解决方法。如果两个字符串具有相同的内容,则字符串方法equals(String)将返回true。将其用于字符串,而不是==