যখন আপনার কোনও ক্ষতি বা অনুপস্থিতি (নেতিবাচক মান) এর ধারণা ব্যতীত কোনও মান উপস্থাপন করার দরকার হয়, তাকে "পরম মান" বলা হয়।
যুক্তিবিজ্ঞান পরম মান প্রাপ্ত করার খুবই সহজ: "If it's positive, maintain it. If it's negative, negate it"
।
এর অর্থ হ'ল আপনার যুক্তি এবং কোডটি নিম্নলিখিতগুলির মতো কাজ করা উচিত:
//If value is negative...
if ( value < 0 ) {
//...negate it (make it a negative negative-value, thus a positive value).
value = negate(value);
}
2 টি উপায় রয়েছে যা আপনি একটি মানটিকে অস্বীকার করতে পারেন:
- দ্বারা, ভাল, এর মান অবহেলা:
value = (-value);
- এটিকে "100% নেতিবাচক" বা "-1" দিয়ে গুণ করে:
value = value *
(-1);
উভয়ই একই মুদ্রার দুটি দিক। এটি কেবল যে আপনি সাধারণত মনে রাখবেন না value = (-value);
এটি আসলে value = 1 * (-value);
।
ঠিক আছে, আপনি জাভাতে এটি কীভাবে করেন, এটি খুব সহজ, কারণ জাভা ইতিমধ্যে এর জন্য একটি ফাংশন সরবরাহ করে Math class
:value = Math.abs(value);
হ্যাঁ, এটি না করে Math.abs()
করা খুব সাধারণ গণিতের সাথে কোডের একটি লাইন তবে কেন আপনার কোডটিকে কুৎসিত দেখাচ্ছে? শুধু জাভা সরবরাহিত Math.abs()
ফাংশন ব্যবহার করুন ! তারা একটি কারণে এটি সরবরাহ!
আপনার যদি পুরোপুরি ফাংশনটি এড়িয়ে যাওয়ার প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন value = (value < 0) ? (-value) : value;
, যা টার্নারি অপারেটর ( ? :
) ব্যবহার করে লজিক (3 য়) বিভাগে উল্লিখিত কোডটির কেবল একটি আরও কমপ্যাক্ট সংস্করণ ।
অধিকন্তু, এমন পরিস্থিতিতেও থাকতে পারে যেখানে আপনি সর্বদা একটি ফাংশনের মধ্যে ক্ষতি বা অনুপস্থিতি উপস্থাপন করতে চান যা ইতিবাচক এবং নেতিবাচক উভয়ই মান পেতে পারে।
কিছু জটিল চেক করার পরিবর্তে, আপনি কেবল নিখুঁত মান পেতে পারেন এবং এটিকে তুচ্ছ করতে পারেন: negativeValue = (-Math.abs(value));
এই বিষয়টি মাথায় রেখে এবং আপনার মতো একাধিক সংখ্যার সংখ্যার সাথে একটি কেস বিবেচনা করে কোনও ফাংশন বাস্তবায়ন করা ভাল ধারণা হবে:
int getSumOfAllAbsolutes(int[] values){
int total = 0;
for(int i=0; i<values.lenght; i++){
total += Math.abs(values[i]);
}
return total;
}
সম্ভাব্যতার উপর নির্ভর করে আপনার আবার সম্পর্কিত কোডের প্রয়োজন হতে পারে, এগুলি আপনার নিজের "ইউজস" লাইব্রেরিতে যুক্ত করা, এই জাতীয় ফাংশনগুলিকে প্রথমে তাদের মূল উপাদানগুলিতে বিভক্ত করা এবং চূড়ান্ত ফাংশনটি কেবল কল করার নীড় হিসাবে বজায় রাখা ভাল ধারণা হতে পারে মূল উপাদানগুলির এখন-বিভক্ত ফাংশন:
int[] makeAllAbsolute(int[] values){
//@TIP: You can also make a reference-based version of this function, so that allocating 'absolutes[]' is not needed, thus optimizing.
int[] absolutes = values.clone();
for(int i=0; i<values.lenght; i++){
absolutes[i] = Math.abs(values[i]);
}
return absolutes;
}
int getSumOfAllValues(int[] values){
int total = 0;
for(int i=0; i<values.lenght; i++){
total += values[i];
}
return total;
}
int getSumOfAllAbsolutes(int[] values){
return getSumOfAllValues(makeAllAbsolute(values));
}