2011-10-24 20 views
5

का उपयोग कर मैं अपने प्रोग्रामिंग द्वितीय वर्ग से एक प्रश्न के साथ कुछ समस्या हो रही है और एक ईंट की दीवार मारा है तुलना, सोच रहा था?डबल स्ट्रिंग प्रत्यावर्तन

सवाल एक उपयोगकर्ता के लिए इनपुट करने के लिए एक स्ट्रिंग पूछता है, कार्यक्रम इनपुट स्ट्रिंग उल्टा करने के लिए और फिर मूल करने के लिए रिवर्स तुलना करने के लिए, इस रिकर्सिवली किया जाना चाहिए।

अब तक मेरे पास है:

public class question1 
{ 
public static void main(String args[]) 
{ 

String input = JOptionPane.showInputDialog(null, "Please enter a sentence to determine if it is a palindrome."); 
String backwardsinput = Reverse(input); 
System.out.println(backwardsinput); 
boolean Palindrome = PalindromeCheck(backwardsinput, input); 

    if (Palindrome == true) 

     { 
     JOptionPane.showMessageDialog(null,"That is a palindrome!"); 
     } 

    if (Palindrome == false) 

     { 
     JOptionPane.showMessageDialog(null,"That is not a palindrome"); 
     } 

} 

public static String Reverse (String input) 
{ 
    if (input.length() <= 1) 
    return input; 

    else 
    { 
     char x = input.charAt(input.length()-1);    
     return x+Reverse(input.substring(0,input.length()-1)); 
    } 

} 



public static boolean PalindromeCheck (String backwardsinput, String input) 
{ 

    if(input.length() == 0 || input.length() == 1) 
      return true; 

     if(backwardsinput.charAt(0) == input.charAt(input.length()-1)) 
      return PalindromeCheck(backwardsinput.substring(1, backwardsinput.length()-1), input.substring(1, input.length()-1)); 

     else 
     return false; 

     }  
} 

मेरे समस्या है, यह बताता है कि मुझे सब कुछ है विलोमपद, मैं इसे पर अधिक देखा है और अधिक और क्यों समझ नहीं कर सकते हैं!

+0

शायद वे * पहले * आप कैसे * प्रारूप * अपने कोड के लिए, सिखाना चाहिए तो अन्य विषयों पर आगे बढ़ें। – Bohemian

+0

आप बाहर बिंदु सकता है मैं गलत क्या कर रही हूं या इस मामले पर कुछ संसाधनों की दिशा में मुझे इशारा करते हैं, मैं इसे सराहना करेंगे। मैं बस सीखना चाहता हूं और बाद में सबसे अच्छा काम करना चाहता हूं। – Eogcloud

+0

@Bohemian: नहीं सबसे खराब स्वरूपण मैंने देखा है - यह केवल शीर्ष सा है कि कुछ काम करने की जरूरत है! और Eogcloud, मुझे स्वरूपण और त्रुटियों के बावजूद आपका कोड पसंद है! :-) – Andy

उत्तर

6

आप दो बार काम कर रहे हैं (एक तरह से)।

if(backwardsinput.charAt(0) == input.charAt(input.length()-1)) 
              ^^^^^^^^^^^^^^^^ 

होना चाहिए

if (backwardsinput.charAt(0) == input.charAt(0)) 
              ^

आप लगभग :-)


इसके अलावा

यह मिल गया,

if (cond) 
    return something; 
else 
    return false; 

को व्यक्त करने का एक और तरीका है

है
return cond && something; 

इस प्रकार अपने पिछले लाइनों के रूप में

return backwardsinput.charAt(0) == input.charAt(0) && 
     palindromeCheck(backwardsinput.substring(1, backwardsinput.length() - 1), 
           input.substring(1, input.length() - 1)); 
लिखा जा सकता है

संबंधित प्रश्न/उत्तर:

+0

पिछले बिट उपयोगी है, मैं तुम्हें इतना की तरह, धन्यवाद वापसी बयान संरचना सकता है नहीं पता था! – Eogcloud

+0

धन्यवाद aiobe, मैं लौटने की कि जिस तरह से के बारे में जानकारी नहीं थी, लेकिन अब मैं इसके बारे में लगता है कि यह समझदारी की बात है क्योंकि यह सिर्फ एक एकल लाइन किसी और बयान करता है, तो तरह है नहीं है! – Andy

+0

जो समझ में नहीं आता है? मेरा प्रस्ताब? – aioobe

2

आप स्ट्रिंग पीछे कर रहे हैं और उसके बाद चेक स्ट्रिंग में यह उलटा मिलान करता है। यानी यह परीक्षण करता है कि स्ट्रिंग को सही ढंग से उलट दिया गया था।

आप कर सकते हैं स्ट्रिंग रिवर्स नहीं है और फिर जब केवल एक स्ट्रिंग की जाँच (रिवर्स से ratehr) पीछे की ओर ही मेल खाता है।

+0

यह आदर्श स्थिति होगी! मेरे लिए दुर्भाग्य से, प्रश्न विशेष रूप से कहा गया है कि हम इसे रिवर्स और रिकर्सिवली रिवर्स :( – Eogcloud

+0

तार्किक टूटने एक भयानक विचार है कि आप इसे आरक्षित और पहले चरित्र तार की तुलना करने के साथ पहली चरित्र की तुलना करें। –

3
if(backwardsinput.charAt(0) == input.charAt(input.length()-1)) 

यह काम नहीं करता है। आप backwardsinput.charAt(0) == input.charAt(0) चाहते हैं। क्योंकि आपने इसे उलट दिया।

जब मैं कुछ इस तरह डिबग, मैं अलग सब मेरी यौगिक बयान को खींचने के लिए है, तो

if(backwardsinput.charAt(0) == input.charAt(input.length()-1)) 

बन जाएगा

char bc = backwardinput.charAt(0); 
char ic = input.charAt(input.length()-1); 
System.println(bc); 
System.println(ic); 
if (bc == ic) { 

हम सब गूंगा गलती करते हैं जब हम बहुत ज्यादा रखने का प्रयास करते हैं एक अभिव्यक्ति में, इसलिए तर्क त्रुटियों की तलाश शुरू करने के लिए ये अच्छी जगहें हैं।

+0

कर सकते हैं, महान के साथ मूल की तुलना करना होगा गलतियों को खोजने का तरीका। धन्यवाद! – Eogcloud

संबंधित मुद्दे