【问题标题】:palindrome or not what logical error in this回文与否这有什么逻辑错误
【发布时间】:2017-07-09 06:36:28
【问题描述】:

此代码中的逻辑错误是什么。在此非回文中也显示回文,例如“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();
    }

}

【问题讨论】:

  • StringBuffer 就地更改字符串内容并返回一个引用。两个变量始终指向同一个对象。

标签: java string algorithm


【解决方案1】:


按照 cmets 中的建议,我已经修改了您的代码,可以正常工作

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();
    }

【讨论】:

    【解决方案2】:

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

    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();
        }
    
    }
    

    【讨论】:

      【解决方案3】:

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

      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);
         }
      }
      

      【讨论】:

        【解决方案4】:

        使用此代码检查字符串是回文还是非回文

        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");
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 2021-03-11
          • 1970-01-01
          • 2021-04-05
          • 2022-11-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多