我正在编写一个程序,查找最多8个字符的单词/短语是否是回文。无论我输入什么作为输入,即使它是回文,我的程序打印我的else语句。我检查并确保我写的代码实际上反向打印输入,它确实。所以我不太清楚问题是什么。
import java.util.Scanner;
public class hw5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String word, newWord;
int lengthOfWord;
char lc;//last character
System.out.print("Enter word/phrase of 8 characters or less: ");
word = in.nextLine();
word = word.toLowerCase();
newWord = word;
lengthOfWord = word.length();
lc = word.charAt(lengthOfWord -1);
lc = word.charAt(lengthOfWord -1);
if (word.length() == 2)
newWord = lc+word.substring(0,1);
else if (word.length() == 3)
newWord = lc+word.substring(1,2)+word.substring(0,1);
else if (word.length() == 4)
newWord = lc+word.substring(2,3)+word.substring(1,2)+word.substring(0,1);
else if (word.length() == 5)
newWord = lc+word.substring(3,4)+word.substring(2,3)+word.substring(1,2)+word.substring(0,1);
else if (word.length() == 6)
newWord = lc+word.substring(4,5)+word.substring(3,4)+word.substring(2,3)+word.substring(1,2)+word.substring(0,1);
else if (word.length() == 7)
newWord = lc+word.substring(5,6)+word.substring(4,5)+word.substring(3,4)+word.substring(2,3)+word.substring(1,2)+word.substring(0,1);
else if (word.length() == 8)
newWord = lc+word.substring(6,7)+word.substring(5,6)+word.substring(4,5)+word.substring(3,4)+word.substring(2,3)+word.substring(1,2)+word.substring(0,1);
else
newWord = "error, not enough or too many characters";
if (newWord == word)
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
System.out.println(newWord);
答案 0 :(得分:4)
你可以让它变得更简单。
word = word.toLowerCase();
newWord = new StringBuilder(word).reverse().toString();
if (newWord.equals(word))
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
答案 1 :(得分:2)
if (newWord.equals(word))
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
使用==时,不比较单词,比较的是内存中两个变量的索引。
答案 2 :(得分:2)
==
表示运行时将检查它们是否指向同一地址,equals
将检查这两个对象是否具有相同的内容。因此,请尝试使用equals
方法比较字符串和==
数字。
答案 3 :(得分:2)
String
是对象。字符串变量只是指向字符串对象的指针。因此,当你执行if(newWord==word)
时,你不是要比较字符串的内容,而是比较这些指针中的值(指针指向的内存位置)。您需要使用String
的{{1}}方法来比较两个字符串的内容。