我正在练习制作自己的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;
}
}
答案 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。将其用于字符串,而不是==
。