Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 为什么在这段代码中,它在比较字符串时总是返回false?_Java_Palindrome - Fatal编程技术网

Java 为什么在这段代码中,它在比较字符串时总是返回false?

Java 为什么在这段代码中,它在比较字符串时总是返回false?,java,palindrome,Java,Palindrome,为什么ifs.equalsb总是返回false 现在我的问题已经解决了!!!!谢谢大家 这都是因为改变了数组的大小 class A { // this is the function of plaindrome boolean palindrome(int x) { // conversion of integer into string String s = Integer.toString(x); // conversion of string into c

为什么ifs.equalsb总是返回false 现在我的问题已经解决了!!!!谢谢大家 这都是因为改变了数组的大小

 class A {
  // this is the function of plaindrome
  boolean palindrome(int x) {
    // conversion of integer into string
    String s = Integer.toString(x);
    // conversion of string into char array
    char p[] = s.toCharArray();
    int j = 0;
    char t[] = new char[p.length];
    for (int i = (p.length) - 1; i >= 0; i--) {
      t[j] = p[i];
      j++;
    }

    String b = new String(t);
    if (s.equals(b)) return true;
    else return false;
  }

  public static void main(String args[]) {
    A object = new A();
    object.palindrome(1221);
  }
}

您正在通过一个长度为24的字符数组反转字符串。char是Java中的一个原语,这样的原语被分配为\u0000。然后,当它转换为字符串时,它在您的案例中变成1221\u0000\u0000\u0000,这与1221不同。通过将t初始化为新字符[p.length],它应该工作得更好。

void方法无法返回。发布真实代码。另外,main对结果不做任何处理,那么您如何知道它始终为false呢?另请参见StringBuilder.reverse。首先,b.length==24,s.length最多不会那么大,它将为11。将24替换为p.length并返回布尔值而不是void。如果这是我的代码,如果s.equalsb返回true,我会在行中设置一个调试器断点;并在调试器中检查s和b的值。因此,根据您的说法,在转换为字符串后,剩余的字符(即20个字符)将具有空字符\u0000???对吗?如果是这样的话,那你为什么要提到这个1221\u0000\u0000\u0000?你只打印了3次nullYes,字符串将有21个\u0000条目,我只是把剩余的留给了保存器空间。Char不能为null,引用为null,但Char是一个原语,因此您基本上可以在字符串中获得null的ascii等价物。