जावा में a boolean
को कन्वर्ट करने का सबसे स्वीकृत तरीका क्या है int
?
जावा में a boolean
को कन्वर्ट करने का सबसे स्वीकृत तरीका क्या है int
?
जवाबों:
int myInt = myBoolean ? 1 : 0;
^^
पीएस: सच = 1 और गलत = 0
(foo && (!bar || baz)) ? 1 : 0
। जाहिर है, अगर यह सिर्फ एक पहचानकर्ता है, तो परेंस आवश्यक या वांछनीय नहीं हैं।
(boolean expression) ? 1 : 0;
अधिक समझने योग्य होगा। मुझे लगता है कि my
उपसर्ग ने इसे एक चर की तरह बनाया।
foo && (!bar || baz) ? 1 : 0
एक वाक्यविन्यास त्रुटि होगी। (मुझे पता है कि यह 6 साल हो गया है)
टर्नेरी ऑपरेटर का उपयोग करना सबसे सरल, सबसे कुशल और सबसे पठनीय तरीका है कि आप क्या चाहते हैं। मैं आपको इस समाधान का उपयोग करने के लिए प्रोत्साहित करता हूं।
हालाँकि, मैं एक विकल्प, विरोधाभासी, अक्षम, अपठनीय समाधान का प्रस्ताव करने के लिए विरोध नहीं कर सकता।
int boolToInt(Boolean b) {
return b.compareTo(false);
}
अरे, ऐसे कूल जवाबों के लिए लोग वोट देना पसंद करते हैं!
संपादित करें
वैसे, मैंने अक्सर दो मूल्यों (आमतौर पर, compareTo
विधि के कार्यान्वयन में ) की तुलना करने के एकमात्र उद्देश्य के लिए एक बूलियन से एक इंट में रूपांतरण देखा । Boolean#compareTo
उन विशिष्ट मामलों में जाने का रास्ता है।
संपादित करें २
जावा 7 ने एक नया यूटिलिटी फंक्शन पेश किया, जो सीधे आदिम प्रकार के साथ काम करता है, Boolean#compare
(धन्यवाद शमोसल )
int boolToInt(boolean b) {
return Boolean.compare(b, false);
}
Boolean.compare()
ऑटोबॉक्सिंग का उपयोग और इससे बच सकते हैं । 2. प्रलेखन Boolean.compareTo()
यह नहीं कहता है कि यह 1 लौटेगा, केवल "एक सकारात्मक मूल्य अगर यह वस्तु सत्य का प्रतिनिधित्व करती है और तर्क झूठ का प्रतिनिधित्व करता है"।
boolean b = ....;
int i = -("false".indexOf("" + b));
5 - b.toString().length
import org.apache.commons.lang3.BooleanUtils;
boolean x = true;
int y= BooleanUtils.toInteger(x);
BooleanUtils.toInteger
बस के रूप में लागू किया गया है return bool ? 1 : 0;
।
वह स्थिति पर निर्भर करता है। अक्सर सबसे सरल दृष्टिकोण सबसे अच्छा है क्योंकि यह समझना आसान है:
if (something) {
otherThing = 1;
} else {
otherThing = 0;
}
या
int otherThing = something ? 1 : 0;
लेकिन कभी-कभी बूलियन ध्वज के बजाय एनम का उपयोग करना उपयोगी होता है। मान लें कि तुल्यकालिक और अतुल्यकालिक प्रक्रियाएं हैं:
Process process = Process.SYNCHRONOUS;
System.out.println(process.getCode());
जावा में, enum में अतिरिक्त विशेषताएँ और विधियाँ हो सकती हैं:
public enum Process {
SYNCHRONOUS (0),
ASYNCHRONOUS (1);
private int code;
private Process (int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
?:
आप ब्लॉक के अंदर विराम बिंदु डाल सकते हैं कि एक अतिरिक्त कारण है ।
यदि आप अपाचे कॉमन्स लैंग का उपयोग करते हैं (जो मुझे लगता है कि बहुत सारे प्रोजेक्ट इसका उपयोग करते हैं), तो आप इसे इस तरह से उपयोग कर सकते हैं:
int myInt = BooleanUtils.toInteger(boolean_expression);
toInteger
विधि 1 boolean_expression
सही है, तो 0, अन्यथा
BooleanUtils.toInteger
बस के रूप में लागू किया गया है return bool ? 1 : 0;
।
यदि आप बाधा डालना चाहते हैं, तो इसका उपयोग करें:
System.out.println( 1 & Boolean.hashCode( true ) >> 1 ); // 1
System.out.println( 1 & Boolean.hashCode( false ) >> 1 ); // 0
के साथ चाल खेलते हैं Boolean.compare(boolean, boolean)
। फ़ंक्शन का डिफ़ॉल्ट व्यवहार: यदि दोनों मान समान हैं, तो यह 0
अन्यथा वापस आता है -1
।
public int valueOf(Boolean flag) {
return Boolean.compare(flag, Boolean.TRUE) + 1;
}
स्पष्टीकरण : हम Boolean.compare के डिफ़ॉल्ट वापसी जानते हैं -1 है तो +1 कर रिटर्न मान पर गलत मैच के मामले में 0 के लिए False
और 1 के लिएTrue
Boolean.compare(myBoolean, false)
उद्धृत वर्णन करने के लिए बेहतर accorning फिट
तथ्य यह है कि मुझे मान रखने के लिए एक स्टेटमेंट के चारों ओर एक आवरण विधि लिखनी है, सिर्फ पहले ही कारणों की एक बड़ी सूची में जोड़ देता है कि जावा को पहले से ही क्यों मरना चाहिए। और टर्नरी ऑपरेटर को एक फंक्शन में लपेटे हुए भी नहीं देखा गया, लेकिन हर जगह कॉपी पेस्ट किया गया था। यह सीपीयू चक्रों की बर्बादी है और कोड पठनीयता का अपमान है।
यहां भी अधिकांश उत्तरों में शून्य स्पष्टीकरण के साथ सैकड़ों उत्थान हैं, जो मुझे अनुमान लगाते हैं कि बुरा अभ्यास सिर्फ इतना जावा के संपर्क में होने का एक परिणाम है। अगर मैंने किसी भी आधुनिक भाषा में इंट्री करने के लिए बूलियन कास्टिंग के लिए एक टर्नरी ऑपरेटर लिखा है तो मुझे अगले दिन जो भी नौकरी मिलेगी उससे निकाल दिया जाएगा। इसलिए आज मैंने अपने जावा असाइनमेंट के साथ नियोजन की कोशिश करना छोड़ दिया है और मूर्खता को अपनाने का फैसला किया है:
public static int booltoint(boolean nonsense) {
// Let's start with indenting using spaces, 16 of them to be precise
String[] ____int = new String[500];
____int[0] = Boolean.toString(nonsense);
try {
Thread.sleep(100);
} catch (Exception e) { }
Random rand = new Random();
int n = rand.nextInt((int)1e9);
int result = 0;
int other_Result = 1;
for (int i = -5; i < 2; i++) {
try {
if (n == 35467247) return 5; // let's just fail with one in a billion chance
if ((5 - ____int[i].length()) == 1) {
return ++result;
} else if(____int[i] == "false") {
return --other_Result;
}
} catch (Exception e) {
// This method will throw an exception 5 times every single time I
// cast a boolean to int before returning an integer
}
}
return (int)1e35;}
true
और किसके अनुरूप माना जाएगाfalse
?