2010-02-07 12 views
5

में अनुवाद करने वाली विधि को कैसे लिखना है, मैं जावा के लिए नया हूं और मुझे एक ऐसी विधि लिखने की आवश्यकता है जो एक बूलियन सत्य या गलत स्ट्रिंग "हां" या " । नहीं "मैं थोड़े खो रहा हूँएक बूलियन को "हां" या "नहीं"

public class Book 
{ 
    private String title; 
    private String author; 
    private String isbn; 
    private int pages; 
    private boolean pback; 
    private double price; 

    /** 
    * Constructor for objects of class Book 
    */ 
    public Book(String bookTitle, String bookAuthor, String bookCode, int bookPages, boolean paperback, double bookRetail) 
    { 
     // initialise instance variables 
     title = bookTitle; 
     author = bookAuthor; 
     isbn = bookCode; 
     pages = bookPages; 
     pback = paperback; 
     price = bookRetail; 
    } 


public String translate(boolean trueorFalse) 
      { 
       if(pback = true) 
        { 
         ??????; 
        }    
       else(pback = false) 
        { 
         ???????; 
        } 

      } 
+1

अपने अनुवाद करते हैं() फ़ंक्शन में कोड गलत है। आप समानता ऑपरेटर के बजाय अगर कथन में एक असाइनमेंट ऑपरेटर का उपयोग कर रहे हैं और अन्यथा क्लॉज का उपयोग कर रहे हैं। कक्षा परिभाषा के लिए आपके पास बंद ब्रेस नहीं है। छोटी चीजें, और मुझे यकीन है कि कोई भी इस कोड को चलाने का प्रयास नहीं करेगा, लेकिन चीजों को सही करना अच्छा लगता है :) –

+12

डेवलपर्स जो बी == सच या बी == झूठी लिखते हैं उन्हें रीडिक्शन के लिए बूलियन बूट शिविर में भेजा जाना चाहिए। – starblue

+1

क्या यह होमवर्क है? – MAK

उत्तर

3
if(pback == true) 
{ 
    return "yes"; 
} else { 
    return "no"; 
} 

योग्य कुछ बातें गौर करने योग्य।

  • समानता == का उपयोग कर परीक्षण किया जाता है, ताकि आप if (a == b), if (a = b) नहीं लिखना चाहिए;
  • किसी विधि से मूल्य लौटने पर कीवर्ड return का उपयोग करके मूल्य के बाद किया जाता है;
  • अन्य पूरक पूरक नहीं लेते हैं, जब तक कि आप else if नहीं कहना चाहते हैं, जो if जैसा अभिव्यक्ति लेता है, उदा। else if (a ==b)
+8

सत्य/झूठी के खिलाफ परीक्षण 'if (pback) 'या (विपरीत के लिए)' if (! Pback) 'की तुलना में थोड़े अनावश्यक है। मैं शायद ही कभी सच/झूठी के खिलाफ तुलना करता हूं। इसी तरह मैं हमेशा इस स्थिति के लिए सशर्त ऑपरेटर का उपयोग करता हूं। –

+1

@ जोन: मैं सहमत हूं। मेरा उद्देश्य सबसे आसान संभव समाधान देना था, क्योंकि पूछने वाले ने संकेत दिया कि वह जावा से शुरू हो रहा है। –

+1

मैं कहूंगा कि सशर्त ऑपरेटर * सबसे आसान संभव समाधान है - लेकिन अगर मैं if/else संस्करण प्रस्तुत कर रहा था, तो भी कम से कम मैंने उल्लेख किया होगा कि आपको "==" बिल्कुल आवश्यकता नहीं है। लिखने के लिए –

31
boolean myBoolean = true; 
String result = myBoolean ? "yes" : "no"; 
+2

क्या यह विशेष उदाहरण हमेशा "हां" नहीं लौटाता है? :) या मुझे मजाक नहीं मिल रहा है? –

+1

यह एक उदाहरण है। MyBoolean को अभी तक अनिश्चित बूलियन मान के रूप में माना जाता है, जिसे सभी मामलों में स्पष्ट रूप से परिभाषित नहीं किया गया है। – Xorlev

1
if (pback) { 
    return "yes"; 
} 
else { 
    return "no"; 
} 

मुझे लगता है कि मैं कुछ याद कर रहा हूँ। ,

public static String translate(boolean trueOrFalse) { 
    return trueOrFalse ? "yes" : "no"; 
} 

सामान्य तौर पर यदि आप पाते हैं अपने आप को लेखन:

+5

तकनीकी रूप से बोलते हुए, आप '}' गायब हैं :-) –

+0

फिक्स्ड। धन्यवाद। – MatrixFrog

24

conditional operator अपने दोस्त है

SomeType x = someCondition ? someExpression : someOtherExpression; 

सशर्त ऑपरेटर बनाता है:

SomeType x; 
if (someCondition) { 
    x = someExpression; 
} else { 
    x = someOtherExpression; 
} 

इसका इस्तेमाल करने की आम तौर पर बेहतर होता है सुनिश्चित करें कि someExpression यामें से केवल एक 10 का मूल्यांकन किया जाता है, इसलिए आप विधि कॉल आदि का उपयोग कर सकते हैं, भरोसा है कि उन्हें अनुपयुक्त तरीके से निष्पादित नहीं किया जाएगा।

बेशक ऐसे समय होते हैं जब यह बहुत जटिल हो जाता है - आपको अपने लिए प्रत्येक फॉर्म की पठनीयता का न्याय करने की आवश्यकता होती है।

+1

"सशर्त ऑपरेटर यह सुनिश्चित करता है कि केवल कुछ एक्सपेरेशन या कुछ अन्य एक्सप्रेशन का मूल्यांकन किया जाए, ताकि आप विधि कॉल आदि का उपयोग कर सकें, भरोसा दिलाएं कि उन्हें अनुपयुक्त तरीके से निष्पादित नहीं किया जाएगा।" यदि –

+0

@matt b - ठीक है, तो इसका उपयोग करने के लिए भी यही सच है, यही कारण है कि वे एक दूसरे के बदले में हैं। मुद्दा यह है कि यह वीबी में आईआईएफ के समान नहीं है, उदाहरण के लिए - एक आम चिंता यह है कि * दूसरे और तीसरे अभिव्यक्तियों के दोनों * का मूल्यांकन किया जा सकता है, जो वास्तव में एक समस्या नहीं है। –

-1

ऊपर सलाह काम करना चाहिए, लेकिन मैं आपको उपयोग करने के लिए सिफारिश करेंगे:

public String translate(boolean trueOrFalse) 
{ 
    return String.valueOf(trueOrFalse); 
} 

क्योंकि बाद में आप आसानी से वापस परिवर्तित कर सकते हैं:

public boolean translateBack(String translation) 
{ 
    return Boolean.parseBoolean(translation); 
} 

लेकिन अनुवाद स्ट्रिंग हो जाएगा " सही गलत "" का ":)

-5
String yesNo(boolean b) { 
    String[] s = {"yes", "no"}; 
    return b ? s[0] : s[1]; 
} 

सही वापसी

के साथ संपादित
+0

-1 -1 मुझसे नहीं है, लेकिन यह शायद सबसे अधिक है क्योंकि आप अपनी विधि में 'स्ट्रिंग []' की आवश्यकता नहीं बना रहे हैं। आप इसे समझना मुश्किल बना रहे हैं। बस बस वापस लौटें? "हाँ": "नहीं"; '। –

+1

er, आप एक ऐसे स्ट्रिंग में 'स्ट्रिंग' लौट रहे हैं जिसमें' बूलियन 'का रिटर्न प्रकार है, स्ट्रिंग सरणी का उल्लेख नहीं है * ओवरकिल *। –

0

सबसे पहले, आपके अनुवाद विधि के पैरामीटर का कभी भी उपयोग नहीं किया जाता है। आपको इसे ठीक करना चाहिए।

दूसरा, क्या आपको सशर्त के लिए स्ट्रिंग मान "हां" और "नहीं" का उपयोग करने की आवश्यकता है? यदि नहीं और आप केवल बुलियन संस्करण का उपयोग कर सकते हैं (और मुझे कोई कारण नहीं दिख रहा है जिसे आप नहीं कर सकते) तो मैं बूलियन छोड़ने का सुझाव देता हूं।

 //say your boolean variable is called gotIt 
      if(gotIt == true) //you can also just say if(gotIt) here 
       { 
        //here you place the string where it needs to be, either output it or place it into a variable 
        System.out.println("Yes"); 
       }    
      else 
       { 
        //same as above but for false 
        System.out.println("No"); 
       } 

     } 

तथ्य यह जितना बूलियन मूल्यों के साथ सशर्त, उपयोग में आसान है:

फिर आप "हाँ" या "नहीं" जब यह निम्न कोड की तरह कुछ का उपयोग कर outputted है कि बूलियन अनुवाद कर सकते हैं समानता के लिए 2 तारों का परीक्षण करने का विरोध किया।

4

Boolean जैसे सामान्य जावा कक्षाओं के साथ काम करने के लिए अपाचे समूह से Apache Commons Lang नामक एक परियोजना है।

toStringOnOff(boolean bool) - converts a boolean to a String returning 'on' or 'off' 
toStringOnOff(Boolean bool) - converts a Boolean to a String returning 'on', 'off' or null 
toStringTrueFalse(boolean bool) - converts a boolean to a String returning 'true' or 'false' 
toStringTrueFalse(Boolean bool) - converts a Boolean to a String returning 'true', 'false' or null 
toStringYesNo(boolean bool) - converts a boolean to a String returning 'yes' or 'no' 
toStringYesNo(Boolean bool) - converts a Boolean to a String returning 'yes', 'no' or null 

अपने उदाहरण में आप toStringYesNo विधि के साथ काम करना चाहिए: इसका BooleanUtils वर्ग के साथ काम करने के लिए कुछ अच्छा तरीकों है।

boolean myBoolean = false; 
String result = BooleanUtils.toStringYesNo(myBoolean); 
System.out.println(result); 

यह

no 

अपनी परियोजना के लिए पुस्तकालय को जोड़ने के लिए प्रिंट होगा बस में जोड़ने के अपने Mavenpom.xml निर्भरता:

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.6</version> 
</dependency> 
+1

क्या आप अपने कोड में कुछ संदर्भ जोड़ सकते हैं? – Chrismas007

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