জাভাতে boolean
কোনও রূপান্তর করার সবচেয়ে গ্রহণযোগ্য উপায় কী int
?
জাভাতে 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
সেই নির্দিষ্ট ক্ষেত্রে যাওয়ার উপায়।
সম্পাদনা 2
জাভা 7 একটি নতুন ইউটিলিটি ফাংশন চালু করেছে যা আদিম ধরণের সাথে সরাসরি কাজ করে, Boolean#compare
(ধন্যবাদ শমোসেল )
int boolToInt(boolean b) {
return Boolean.compare(b, false);
}
Boolean.compare()
অটোবক্সিং ব্যবহার এবং এড়াতে পারেন । ২. এর জন্য ডকুমেন্টেশনগুলি 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());
জাভাতে, এনামের অতিরিক্ত বৈশিষ্ট্য এবং পদ্ধতি থাকতে পারে:
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
পদ্ধতিটি boolean_expression
সত্য হলে 1 প্রদান করে , অন্যথায় 0 করে 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;
}
ব্যাখ্যা : যেহেতু আমরা জানি যে বুলিয়ান ডট কমকে ডিফল্ট রিটার্ন -1 -র সাথে ভুল-মিল হয় তাই +1 এর সাথে রিটার্নের মান তৈরি করে 0 জন্য False
এবং 1 জন্যTrue
Boolean.compare(myBoolean, false)
উদ্ধৃত বর্ণনার সাথে আরও ভালভাবে শোনাতে পারে
একটি মান ingালার জন্য যদি আইএফ-এর বিবৃতিতে আমাকে প্রায় একটি মোড়ক পদ্ধতি লিখতে হয় তা এই যে ইতিমধ্যে জাভাটি ইতিমধ্যে মারা যাওয়ার কারণগুলির বিশাল তালিকাটি যুক্ত করে। এবং টার্নারি অপারেটরটি দেখে এমনকি কোনও ফাংশনেও জড়িয়ে নেই তবে কেবল যেখানেই আটকানো হয়েছে অনুলিপিটি দেখতে পেয়েছি বুলিয়ান কাস্ট দেখি কেবল আমাকে বাদাম চালায়। এটি সিপিইউ চক্রের অপচয় এবং কোড পাঠযোগ্যতার অপমান।
এছাড়াও এখানে বেশিরভাগ উত্তরের শূন্য ব্যাখ্যা সহ শত শত উত্সাহ রয়েছে, যা আমাকে অনুমান করে যে খারাপ অভ্যাসটি কেবল জাভায় এতটা উন্মুক্ত হওয়ার ফলস্বরূপ। আমি যদি কোনও আধুনিক ভাষায় বুলিয়ান কাস্ট করার জন্য কোনও টার্নারি অপারেটর লিখি তবে পরের দিন আমার যে চাকরিই হোক না কেন থেকে আমি বরখাস্ত হয়ে যাব। সুতরাং আজ আমি আমার জাভা কার্যভারগুলির সাথে যুক্তি ব্যবহার করার চেষ্টা ছেড়ে দিয়েছি এবং বোকামির আলিঙ্গনের সিদ্ধান্ত নিয়েছি:
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
?