Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用args的回文;帮我找到错误?_Java_String_Palindrome_Args - Fatal编程技术网

Java 使用args的回文;帮我找到错误?

Java 使用args的回文;帮我找到错误?,java,string,palindrome,args,Java,String,Palindrome,Args,我正在构建一个类,该类检查输入是否包含回文,并仅返回回文术语(如果存在)。我已经能够开发以下内容,它编译和运行时没有错误,但我没有从中得到任何回报 谁能看出我的错误在哪里 public class Palindrome { public static boolean isPalindrome(String word) { String back = word.charAt(word.length() - 1) + ""; for (int i = word.length()

我正在构建一个类,该类检查输入是否包含回文,并仅返回回文术语(如果存在)。我已经能够开发以下内容,它编译和运行时没有错误,但我没有从中得到任何回报

谁能看出我的错误在哪里

public class Palindrome {

public static boolean isPalindrome(String word) {

    String back = word.charAt(word.length() - 1) + "";
    for (int i = word.length() - 2; i >= 0; i--) {
        back = back + word.charAt(i);
    }
    if (word == back) {
        return true;
    }
    return false;
}


public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        if (isPalindrome(args[i]) == true) {
            System.out.println(args[i]);
        }
    }

}

}
公共类回文{
公共静态布尔值isAlindrome(字符串字){
返回字符串=word.charAt(word.length()-1)+“”;
对于(int i=word.length()-2;i>=0;i--){
back=back+word.charAt(一);
}
if(word==返回){
返回true;
}
返回false;
}
公共静态void main(字符串[]args){
对于(int i=0;i
我相信问题在于主方法,特别是在if语句中,但我不确定它为什么不起作用

public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        if (isPalindrome(args[i]) == true) {
            System.out.println(args[i]);
        }
    }

}
publicstaticvoidmain(字符串[]args){
对于(int i=0;i

提前感谢您提供的任何帮助。谢谢你的时间

常见错误。字符串的比较是错误的。不要使用
==
运算符。使用
equals()
方法

word==back
更改为
word.equals(back)


Rest应该是正确的。

不应该使用==来计算字符串相等性,而应该使用equals()

在.equals()错误上进行了二次调用

此外,您还可以使用内置的字符串反转过程轻松检查回文:

String a = "sampleelpmas";
String b = new StringBuffer(a).reverse().toString();

a.equals(b); //TRUE

对于第一部分,您可以使用
back=new StringBuilder(word).reverse().toString()
,这是更干净的代码,也更优化(速度更快,但在这里并不重要)


但您的问题是在比较字符串时,==检查两个对象是否相等,对于两个字符串,这永远不会是真的,即使它们与您预期的相同。使用
word.equals(back)
,检查字符串的文本内容是否匹配。

输出为false。这不是回文。哈哈哈。你说得对。编辑反愚蠢。现在输出正确;)。这就是为什么结对编程是最好的;DPair的编程非常好。但如果我们将个人编程与结对编程进行比较,我们会比较花费的时间、错误的数量,那么我的结论是:一个人编程对雇主更有利:(,即使错误数较少。只有一个人获得付款。通过就地检查回文,您可以更高效地检查回文。但这是另一个问题。此实现的最大O实际上是n^2。
String a = "sampleelpmas";
String b = new StringBuffer(a).reverse().toString();

a.equals(b); //TRUE