উত্তর:
আপনি মডুলাস অপারেটরটি ব্যবহার করতে পারেন তবে এটি ধীর হতে পারে। এটি যদি পূর্ণসংখ্যা হয় তবে আপনি এটি করতে পারেন:
if ( (x & 1) == 0 ) { even... } else { odd... }
এটি কারণ কম বিট সর্বদা একটি বিজোড় সংখ্যায় সেট করা হবে।
n % 2 == 0অর্থহীন অর্থ Divide by 2 and check if the remainder is 0, n & 1 == 0যা এর অর্থের তুলনায় অনেক পরিষ্কার Zero all the bits but leave the least significant bit unchanged and check if the result is 0। প্রথমটির উন্নত স্পষ্টতা ওভারহেডের (সম্ভবত অ-অস্তিত্বহীন) মূল্যবান। অকাল অপটিমাইজেশন বলতে আমি এটাই বুঝি। যদি কিছু ধীর এবং আপনি যে অংশ এটা প্রোফাইলে পরিবর্তন n % 2করার জন্য n & 1অবশ্যই সমর্থনযোগ্য, কিন্তু এটি পূর্বেই করছেন নয়। বিট অপারেটরদের সাথে সাধারণভাবে কাজ করা প্রোফাইলিংয়ের আগে একটি খারাপ ধারণা।
n % 2 == 0হয় ক্লিনার তুলনায় n & 1 == 0।
যদি আপনি 2 দ্বারা ভাগ করে যখন বাকি হয় 0 হয়, এটি সমান। %অপারেটর একটি বাকী পেতে।
(A % B)নিজেই একটি অভিব্যক্তি হিসাবে ব্যবহার করা যেতে পারে, এবং তখনই জিনিসগুলি মজা পায়।
দশমিক দশমিক (তবে দশমিক, যদি উপস্থিত থাকে তবে এটি অবশ্যই সমান হওয়া উচিত) নির্বিশেষে প্রতিটি সমান সংখ্যা দুটি দ্বারা বিভাজ্য। সুতরাং আপনি %(মডুলো) অপারেটরটি ব্যবহার করতে পারেন , যা বাম দিকে সংখ্যাটি ডানদিকে সংখ্যা দ্বারা বিভক্ত করে এবং বাকীটি ফেরত দেয় ...
boolean isEven(double num) { return ((num % 2) == 0); }
আমি সুপারিশ করতাম
জাভা পাজলার্স: জোশুয়া ব্লাচ এবং নীল গিটোয়ারের ফাঁদ, পিটফলস এবং কর্নার কেস বই
সংখ্যার বিজোড় হয় কিনা তা কীভাবে পরীক্ষা করতে হয় তার সংক্ষিপ্ত বিবরণ রয়েছে। @ অসীম ইয়াদভ যা চেষ্টা করেছিলেন তা প্রথম চেষ্টা:
public static boolean isOdd(int i) {
return i % 2 == 1;
}
তবে যেমনটি বইয়ে উল্লেখ করা হয়েছে:
যখন বাকী অপারেশন কোনও ননজারো ফলাফল দেয়, তখন এটির বাম অপারেণ্ডের মতো একই চিহ্ন রয়েছে
সুতরাং সাধারণত যখন আমাদের নেতিবাচক বিজোড় সংখ্যা হয় তার পরিবর্তে 1 আমরা -1ফলাফল হিসাবে পেয়ে যাব i%2। সুতরাং আমরা @ ক্যামিলো সমাধানটি ব্যবহার করতে পারি বা কেবল করতে পারি:
public static boolean isOdd(int i) {
return i % 2 != 0;
}
তবে সাধারণত দ্রুততম সমাধানটি @ লিউকস্মো র উপরে লিখিত ও অপারেটর ব্যবহার করে:
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
@Edit এটি বিন্দু মূল্য Math.floorMod(int x, int y);যা নেতিবাচক সঙ্গে ভাল পুলিশ লভ্যাংশ কিন্তু আসতে পারেন -1যদি ভাজক নেতিবাচক
সংখ্যাটি সমান বা বিজোড় কিনা তা পরীক্ষা করতে সর্বনিম্ন উল্লেখযোগ্য বিট (ডানদিকে) ব্যবহার করা যেতে পারে। সমস্ত বিজোড় সংখ্যার জন্য বাইনারি উপস্থাপনায় সর্বদা ডানদিকে 1
public static boolean checkOdd(long number){
return ((number & 0x1) == 1);
}
এই নিম্নলিখিত প্রোগ্রামটি বিশাল সংখ্যক (20 এর চেয়ে বেশি সংখ্যার সংখ্যার) পরিচালনা করতে পারে
package com.isEven.java;
import java.util.Scanner;
public class isEvenValuate{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String digit = in.next();
int y = Character.getNumericValue(digit.charAt(digit.length()-1));
boolean isEven = (y&1)==0;
if(isEven)
System.out.println("Even");
else
System.out.println("Odd");
}
}
এখানে আউটপুট ::
122873215981652362153862153872138721637272
Even
আপনি মডুলাস অপারেটরটি ব্যবহার করতে পারেন তবে এটি ধীর হতে পারে। আরও কার্যকর উপায় হ'ল সর্বনিম্ন বিটটি পরীক্ষা করা কারণ এটি নির্ধারণ করে যে একটি সংখ্যা সমান বা বিজোড় কিনা। কোডটি এরকম কিছু দেখাচ্ছে:
public static void main(String[] args) {
System.out.println("Enter a number to check if it is even or odd");
System.out.println("Your number is " + (((new Scanner(System.in).nextInt() & 1) == 0) ? "even" : "odd"));
}
আপনি এটির মতো করতে পারেন:
boolean is_odd(int n) {
return n % 2 == 1 || n % 2 == -1;
}
এটি কারণ জাভাটির মডুলো অপারেশনে লভ্যাংশের চিহ্ন, বাম দিকে: এন। তাই নেতিবাচক এবং ধনাত্মক লভ্যাংশের জন্য, মডুলোগুলির মধ্যে তাদের সাইন রয়েছে।
অবশ্যই, বিটওয়াইজ অপারেশনটি দ্রুত এবং অপ্টিমাইজড, কেবল দুটি বা তিনটি সংক্ষিপ্ত শব্দের সাথে কোডের লাইনটি ডকুমেন্ট করে, যা এটি পাঠযোগ্যতার জন্য করে does
/ অন্য শর্তটি ব্যবহার না করে এটি করার আর একটি সহজ উপায় (ধনাত্মক এবং negativeণাত্মক উভয় সংখ্যার জন্যই কাজ করে):
int n = 8;
List<String> messages = Arrays.asList("even", "odd");
System.out.println(messages.get(Math.abs(n%2)));
একটি বিজোড় নংয়ের জন্য, এক্সপ্রেশনটি '1' কে অবশিষ্ট হিসাবে প্রদান করবে giving
messages.get (1) = 'বিজোড়' এবং তাই 'বিজোড়' মুদ্রণ
অন্যথায়, 'এমনকি' মুদ্রণ করা হয় যখন এক্সপ্রেশন ফলাফল '0' এর সাথে আসে
int n = -3;। @ ক্যামিলো নীচে উল্লিখিত হিসাবে - যখন বাকি অপারেশন কোনও ননজারো ফলাফল ফেরত দেয়, তখন এটির বাম অপারেন্ডের মতো একই চিহ্ন রয়েছে যাতে জেনারেলভাবে আমাদের System.out.println(messages.get(-1));যা দেয়java.lang.ArrayIndexOutOfBoundsException
যদি প্রদত্ত সংখ্যার মডুলাসটি শূন্যের সমান হয় তবে সংখ্যাটি অন্য কোনও বিজোড় সংখ্যা। নীচে যে পদ্ধতিটি করে তা নীচে:
public void evenOrOddNumber(int number) {
if (number % 2 == 0) {
System.out.println("Number is Even");
} else {
System.out.println("Number is odd");
}
}
package isevenodd;
import java.util.Scanner;
public class IsEvenOdd {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter number: ");
int y = scan.nextInt();
boolean isEven = (y % 2 == 0) ? true : false;
String x = (isEven) ? "even" : "odd";
System.out.println("Your number is " + x);
}
}
প্রদত্ত সংখ্যাটি সমান বা বিজোড় কিনা তা নির্ধারণ করার জন্য এখানে একটি উদাহরণ রয়েছে,
import java.util.Scanner;
public class EvenOdd
{
public static void main(String[] args)
{
int a;
System.out.println("Please enter a number to check even or odd:");
Scanner sc = new Scanner(System.in);
a = sc.nextInt();
if(a % 2 == 0)
{
System.out.println("Entered number is an even number");
}
else
{
System.out.println("Entered number is an odd number");
}
}
}
ঠিক আছে, একই নির্ধারণ করার জন্য অনেকগুলি উপায় রয়েছে। পড়ুন এই আরো উদাহরণ জন্য সম্পদ প্রদত্ত সংখ্যার জোড় না বিজোড় হয় খুঁজে পেতে।
এখানে সম্পূর্ণ উদাহরণ:
import java.text.ParseException;
public class TestOddEvenExample {
public static void main(String args[]) throws ParseException {
int x = 24;
oddEvenChecker(x);
int xx = 3;
oddEvenChecker(xx);
}
static void oddEvenChecker(int x) {
if (x % 2 == 0)
System.out.println("You entered an even number." + x);
else
System.out.println("You entered an odd number." + x);
}
}