好的。我知道还有其他几个很好的程序可以检查字符串是否为回文。
但我正在尝试这段代码。问题是,由于我正在逐个字符地检查,每次字符匹配时都会打印出来
回文。
但我只想打印一次palindrome。
那么有没有办法让我可以完全遍历循环然后执行打印语句?
import java.util.Scanner;
public class Solution{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String A = scan.next();
for(int i =0;i<(A.length()/2);i++)
{
if(A.charAt(i)==A.charAt(A.length()-i-1))
System.out.println("palindrome");
else
System.out.println("not palindrome");
}
}
}
最佳答案
我会保留一个 boolean
标志(默认为 true
),如果不是,则设置为 false
。然后在循环后检查你的标志。类似的东西,
boolean palindrome = true;
for(int i = 0; i < (A.length() / 2); i++)
{
if (A.charAt(i) != A.charAt(A.length() - i - 1)) {
palindrome = false;
break;
}
}
if (palindrome) {
System.out.println("palindrome");
} else {
System.out.println("not palindrome");
}
你可以用 ternary 来写最后一部分(或条件运算符 ? :
)如
System.out.println(palindrome ? "palindrome" : "not palindrome");
并且,您可以替换循环为StringBuilder.reverse()
喜欢
boolean palindrome = new StringBuilder(A).reverse().toString().equals(A);
所以,它可能是像这样的一条线
System.out.println(new StringBuilder(A).reverse().toString().equals(A)
? "palindrome" : "not palindrome");
关于java - 如何在Java中获取字符串的回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953885/