我有一个任务要写一个回文检查器,它可以循环回自身,还包含一个退出语句。我不知道为什么我想到的不起作用。它会起作用一次,但随后默认所有答案为“否”,退出语句根本不起作用。
public static void main(String[] args)
{
Scanner stdln = new Scanner(System.in);
String original, oposite = "";
System.out.printf("Please enter something to see if it is a palindrome.%nEnter \"q\" to stop.%n");
original = stdln.nextLine();
while (original !="q")
{
int length = original.length();
for ( int i = length - 1; i >= 0; i-- )
oposite = oposite + original.charAt(i);
if (original.equals(oposite))
System.out.println("It is a palindrome.");
else
System.out.println("It is not a palindrome.");
System.out.printf("Please enter a something to see if it is a palindrome.%nEnter \"quit\" to stop.%n");
original = stdln.nextLine();`
}
} }
我的想法是,如果用户输入'q',那么这个过程就不会工作,因为这是while语句的条件。相反,它会检查q是否是回文。第二个问题是,一旦它运行一次,所有后续的条目都会导致else语句。我真的不确定我错过了什么。
1条答案
按热度按时间ogq8wdun1#
在while循环的顶部重新设置oposite:反向=“";否则,每次循环时都会向String添加越来越多的文本
另外,不要用
==
或!=
比较字符串,而要用equals(...)
或equalsIgnoreCase(...)
方法。要知道==
检查两个 * 对象引用 * 是否相同,这不是你感兴趣的。另一方面,方法检查两个字符串是否具有相同的字符顺序,这才是这里重要的。所以,
另外,在每个代码块(甚至是单行代码)周围始终使用花括号也是一个好主意,这样可以避免常见错误的出现。