2017-05-19 3 views
-3

私は&をセットを使用して文字列に印刷することを試みています。私を助けてください。Setを使用してPalindromeの単語を印刷する方法

import java.util.*; 
public class PalindromeCount { 

    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter a sentence"); 
     String str = sc.nextLine(); 
     String words[] = str.replaceAll("," , " ").split(""); 


     Set set = new HashSet(); 
     for(String wordL : words) 
     { 
     // I am retrieving each word in String and sending it to the sb 
      StringBuffer sb = new StringBuffer(wordL); 
      if(sb.reverse().equals(wordL))// here I am checking whether it is palindrome or not if it is palindrome I am adding to set 
      { 
       set.add(wordL); 
      } 
     } 
     System.out.println(set); 
    } 
} 
+1

[なぜ「誰かが私を助けることはできますか?」ではない、実際の質問?](https://meta.stackoverflow.com/q/284236/3788176) –

+0

あなたが直面している問題は何?あなたはこのコードが[動作しない]と思います(http://importblogkit.com/2015/07/does-not-work/)? – Pshemo

+2

'sb.reverse()。equals(wordL)'は 'StringBuilder'を' String'と比較しており、常にfalseになります。 'sb.reverse()。toString()。equals(wordL)' –

答えて

0

変更されたコードスニペットは、間違いのいくつかを修正します。 split(" ")は空文字列の各文字の代わりにスペースを分割します。 StringBuilderまたはStringBufferは文字列ではないため、 sb.reverse().toString()が必要です。

String words[] = str.replaceAll("," , "").split(" "); 

Set set = new HashSet(); 
for(String wordL : words){ 
    StringBuilder sb = new StringBuilder(wordL); 
    if(sb.reverse().toString().equals(wordL)){ 
     set.add(wordL); 
    } 

正規表現を使用して句読点や余分なスペースを取り除くこともできます。

//remove everything not in the alphabet 
str = str.replaceAll("[^a-zA-Z ]" , " "); 
//remove all multiple spaces and replace with a single space 
str = str.replaceAll("\\s+", " ").trim(); 

String words[] = str.split(" "); 
+0

入力を とすれば、このマダムはレーダーについて教えてくれます 出力を [、madam、radar] すべての特殊文字を削除または削除する方法 –

+0

これは末尾のスペースのためです。 regexを使って句読点と複数のスペースを削除することができます。 –

-1

このコードを使用して問題を解決してください。

public static void main(String[] args) 
{ 

    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter a sentence"); 
    int st = sc.nextInt(); 

    Set set = new HashSet(); 
    int palindrome = st; // copied number into variable 
    int reverse = 0; 
    while (palindrome != 0) 
    { 
     int remainder = palindrome % 10; 
     reverse = reverse * 10 + remainder; 
     palindrome = palindrome/10; 
    } 
    if (st == reverse) 
    { 
     set.add(reverse); 
    } 

    System.out.println(set); 
} 
関連する問題