2017-03-13 61 views
0

所以我決定打印一個字符串中的所有迴文詞。我沒有使用數組或只找到3-character-words.Here的迴文是我的代碼的方法,問題是,它打印出什麼如何在字符串中打印迴文單詞?

import java.util.Scanner; 
class Pa{ 
    public static void main(String[] args){ 
     Scanner sc = new Scanner (System.in); 
     String s=sc.nextLine(); 
     char b; 
     int i,a; 
     String st="";/to extract a word 
     s=s+" "; 
     String t="";/to extract the reverse of the word 
     a=s.length(); 
     for(i=0;i<a;i++){ 
      b=s.charAt(i); 
      if(b!=' '){ 
       st=st+b;/word 
       t=b+st;/reversed word 
      } else { 
       if(st.equals(t)){ 
        System.out.println(st); 
       } 
      st=""; 
      t=""; 
      } 
     } 
    } 
} 

我無法弄清楚什麼是錯的,也不會欣賞分裂或3個字的迴文查找選項或正常的偶數或奇數迴文查找選項。

+0

http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Biffen

+1

你真的應該打出來迴文邏輯到一個單獨的功能。這將使一切變得更容易調試。創建函數bool isPalindrome(String s)。 – klutt

+0

@Rockabyee Java你在程序的一行中有一個小錯誤。看到我的答案。 –

回答

1

要檢查字符串是否是迴文單迴路足以

public static boolean isPalindrom(String word) { 
    word = word.toLowerCase(); 
    for (int i = 0; i < word.length()/2; i++) { 
     if (word.charAt(i) != word.charAt(word.length() - (i + 1))) { 
      return false; 
     } 
    } 
    return true; 
} 

然後你就可以像input.split("\\s")在每個空格分割你輸入的字符串併爲您的每一個字,如果它是一個迴文

0

你問題在下面。不是將b附加到反轉字符串,而是將它附加到普通字符串。

 b=s.charAt(i); 
     if(b!=' '){ 
      st=st+b; 
      t=b+st; // This should be t=b+t 
     } else { 
0

檢查迴文最簡單的方法:

private static boolean isPalindrom(String s) { 
    return s.equals(new StringBuilder(s).reverse().toString()); 
} 
相關問題