Java 回文是否有什么逻辑错误呢

Java 回文是否有什么逻辑错误呢,java,string,algorithm,Java,String,Algorithm,这段代码中的逻辑错误是什么。在这段非回文的代码中也显示回文,比如“java”不是回文,但代码显示它是回文 package stringbuffer; import java.util.Scanner; public class Task1 { public static void main(String[] args) { // TODO Auto-generated method stub StringBuffer sbuffer = new

这段代码中的逻辑错误是什么。在这段非回文的代码中也显示回文,比如“java”不是回文,但代码显示它是回文

     package stringbuffer;
import java.util.Scanner;
public class Task1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbuffer = new StringBuffer();
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        sbuffer.append(input.nextLine());
        StringBuffer sbuffer1=new StringBuffer();
        sbuffer1=sbuffer.reverse();
        System.out.println(sbuffer1);
        if(sbuffer1.equals(sbuffer)){
            System.out.println("palindrome");
        }
        else{
            System.out.println("not palindrome");

        }
        input.close();
    }

}
Scanner sc = new Scanner(System.in);
    System.out.print("Enter You String : ");
    String string = sc.nextLine();
    String reverse = new StringBuffer(string).reverse().toString();


    if(string.equals(reverse)){
        System.out.println("palindrome");
    }
    else{
        System.out.println("not palindrome");
    }


根据评论中的建议,我已经修改了您的代码,这将很好地工作

package stringbuffer;
import java.util.Scanner;
public class Task1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbuffer = new StringBuffer();
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        sbuffer.append(input.nextLine());
        String actual = sbuffer.toString();
        sbuffer.reverse();
        System.out.println(sbuffer);
        if(sbuffer.toString().equals(actual)){
            System.out.println("palindrome");
        }
        else{
            System.out.println("not palindrome");

        }
        input.close();
    }

逻辑错误,因为您正在使用引用。 试试这个:

package stringbuffer;
import java.util.Scanner;
public class Task1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbuffer = new StringBuffer();
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        sbuffer.append(input.nextLine());

        String original = sbuffer.toString();
        sbuffer.reverse();

        if(original.equals(sbuffer.toString()){
            System.out.println("palindrome");
        }
        else{
            System.out.println("not palindrome");
        }
        input.close();
    }

}

使用此代码检查句子中有多少回文。 这不会使用任何预定义的方法进行反转

import java.io.*;
class String_Pallindrome
{
   public static void main()throws IOException
   {
       DataInputStream br= new DataInputStream(System.in);
       String word="",str,word1="";
       char c,ch;
       int i,j,pc=0;
       System.out.println("Enter the Sentence");
       str=br.readLine();
       System.out.print("The Pallindrome words are :- ");
       for(i=0;i<str.length();i++)
       {

           c=str.charAt(i);
           if(c==' ')
           {
               for(j=0;j<word.length();j++)
               {
                   ch=word.charAt(j);
                   word1=ch+word1;
                }
               if(word1.equalsIgnoreCase(word)==true)
                      pc++;
               word1="";word="";
            }
           else
              word+=c;
            }
       System.out.println();
       System.out.println("Number of Pallindrome word= "+pc);
   }
}
import java.io.*;
类字符串_Pallindrome
{
公共静态void main()引发IOException
{
DataInputStream br=新的DataInputStream(System.in);
字符串word=“”,str,word1=“”;
字符c,ch;
int i,j,pc=0;
System.out.println(“输入句子”);
str=br.readLine();
System.out.print(“Pallindrome单词为:-”);

对于(i=0;i使用此代码检查字符串是否为回文

     package stringbuffer;
import java.util.Scanner;
public class Task1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbuffer = new StringBuffer();
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        sbuffer.append(input.nextLine());
        StringBuffer sbuffer1=new StringBuffer();
        sbuffer1=sbuffer.reverse();
        System.out.println(sbuffer1);
        if(sbuffer1.equals(sbuffer)){
            System.out.println("palindrome");
        }
        else{
            System.out.println("not palindrome");

        }
        input.close();
    }

}
Scanner sc = new Scanner(System.in);
    System.out.print("Enter You String : ");
    String string = sc.nextLine();
    String reverse = new StringBuffer(string).reverse().toString();


    if(string.equals(reverse)){
        System.out.println("palindrome");
    }
    else{
        System.out.println("not palindrome");
    }
更改字符串内容并返回引用。两个变量始终指向同一个对象。