जवाबों:
आप मापांक ऑपरेटर का उपयोग कर सकते हैं, लेकिन यह धीमा हो सकता है। यदि यह पूर्णांक है, तो आप कर सकते हैं:
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); }
मैं सलाह दूँगा
जावा पूज़लर्स: ट्रैप, पॉटैल्स, और कॉर्नर केस बुक जोशुआ बलोच और नील गेयर द्वारा
संक्षिप्त विवरण है कि संख्या विषम है या नहीं, इसकी जांच कैसे करें। पहली कोशिश कुछ वैसी ही है जैसी @AseemYadav ने कोशिश की:
public static boolean isOdd(int i) {
return i % 2 == 1;
}
लेकिन जैसा कि किताब में बताया गया है:
जब शेष ऑपरेशन नॉनजरो परिणाम देता है, तो उसके बाएं ऑपरेंड के समान चिन्ह होता है
इसलिए आम तौर पर जब हमारे पास ऋणात्मक विषम संख्या होती है, तो इसके बजाय 1हमें -1इसका परिणाम मिलेगा i%2। तो हम @Camilo समाधान या बस का उपयोग कर सकते हैं:
public static boolean isOdd(int i) {
return i % 2 != 0;
}
लेकिन आम तौर पर सबसे तेजी से समाधान का उपयोग कर रहा है और ऑपरेटर की तरह @lucasmo ऊपर लिखते हैं:
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
@ एडिट यह उस बिंदु के भी लायक है Math.floorMod(int x, int y);जो नकारात्मक के साथ लाभांश से अच्छा व्यवहार करता है, लेकिन -1यदि विभाजक नकारात्मक है तो भी वापस आ सकता है
सकारात्मक या नकारात्मक संख्याओं के लिए काम करता है
int start = -3;
int end = 6;
for (int val = start; val < end; val++)
{
// Condition to Check Even, Not condition (!) will give Odd number
if (val % 2 == 0)
{
System.out.println("Even" + val);
}
else
{
System.out.println("Odd" + val);
}
}
कम से कम महत्वपूर्ण बिट (सबसे दाएं) का उपयोग यह जांचने के लिए किया जा सकता है कि संख्या सम या विषम है। सभी विषम संख्याओं के लिए, द्विआधारी प्रतिनिधित्व में सबसे दाहिना बिट हमेशा 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;
}
ऐसा इसलिए है क्योंकि जावा के मॉडुलो ऑपरेशन में लाभांश का चिह्न, बाईं ओर: n है। तो नकारात्मक और सकारात्मक लाभांश के लिए, modulo का संकेत है।
बेशक, बिटवाइज़ ऑपरेशन तेज और अनुकूलित है, बस दो या तीन छोटे शब्दों के साथ कोड की रेखा का दस्तावेजीकरण करें, जो इसे पठनीयता के लिए करता है।
एक और आसान तरीका है अगर इसका उपयोग बिना / अन्य शर्त (सकारात्मक और नकारात्मक संख्या दोनों के लिए काम करता है):
int n = 8;
List<String> messages = Arrays.asList("even", "odd");
System.out.println(messages.get(Math.abs(n%2)));
एक विषम संख्या के लिए, अभिव्यक्ति '1' को शेष के रूप में लौटा देगी
messages.get (1) = 'विषम' और इसलिए 'विषम' प्रिंट करना
जब परिणाम '0' के साथ आता है, तब 'भी' मुद्रित होता है
int n = -3;। जैसा कि @Camilo ने नीचे उल्लेख किया है - जब शेष ऑपरेशन एक नॉनज़ेरो परिणाम वापस करता है, तो उसके बाएं ऑपरेंड के समान चिन्ह होता है इसलिए हमारे पास 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);
}
}