{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/odious-number-program",
    "result": {"data":{"markdownRemark":{"html":"<h2>Question</h2>\n<p>An Odious number is a positive whole number. Which has odd number of 1’s in its Binary\nequivalent.</p>\n<ul>\n<li>Example 1: Binary equivalent of 8 is 1000. Which contains odd number of 1’s. So, 8 is\nOdious number.</li>\n<li>Example 2: Binary equivalent of 13 is 1101. Which contains odd number of 1’s. So, 13 is\nOdious number.</li>\n<li>Example 3: Binary equivalent of 9 is 1001. Which contains even number of 1’s. So, 9 is\nnot Odious number.</li>\n</ul>\n<p>A few Odious numbers are : 2, 4, 7, 8, 11, 13, etc.</p>\n<p>Design a program to accept a positive whole number. Find the binary equivalent of the\nnumber and count the number of 1’s in it and display whether it is an Odious number or not\nwith an appropriate message. The proper error message should be displayed for the\nnegative input.</p>\n<p>Test your program with the sample data and some random data:</p>\n<ul>\n<li>Example 1:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">\nINPUT: 11\nOUTPUT:\nBINARY EQUIVALENT = 1011\nNUMBER OF 1’S = 3\n11 IS AN ODIOUS NUMBER</code></pre></div>\n<ul>\n<li>Example 2:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">INPUT: 15\nOUTPUT:\nBINARY EQUIVALENT = 1111\nNUMBER OF 1’S = 4\n15 IS NOT AN ODIOUS NUMBER</code></pre></div>\n<ul>\n<li>Example 3:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">INPUT: -17\nOUTPUT: INVALID INPUT</code></pre></div>\n<h2>Solution</h2>\n<h3>Algorithms</h3>\n<p>For <code class=\"language-text\">main()</code>:</p>\n<ol>\n<li>Prompt the user to enter a positive whole number.</li>\n<li>Read the user's input and store it in a variable <code class=\"language-text\">num</code>.</li>\n<li>If <code class=\"language-text\">num</code> is negative, display an error message and terminate the program.</li>\n<li>Convert <code class=\"language-text\">num</code> to its binary equivalent using the <code class=\"language-text\">toBinaryString</code> method.</li>\n<li>Count the number of ones in the binary string using the <code class=\"language-text\">countOnes</code> method.</li>\n<li>If the number of ones is odd, print that <code class=\"language-text\">num</code> is an Odious number.</li>\n<li>If the number of ones is even, print that <code class=\"language-text\">num</code> is not an Odious number.</li>\n</ol>\n<p>For <code class=\"language-text\">toBinaryString()</code>:</p>\n<ol>\n<li>Initialize a variable <code class=\"language-text\">binaryString</code> to the empty string.</li>\n<li>While <code class=\"language-text\">num</code> is greater than 0:\n<ol>\n<li>Prepend the remainder of <code class=\"language-text\">num</code> divided by 2 to <code class=\"language-text\">binaryString</code>.</li>\n<li>Divide <code class=\"language-text\">num</code> by 2.</li>\n</ol>\n</li>\n<li>Return <code class=\"language-text\">binaryString</code>.</li>\n</ol>\n<p>For <code class=\"language-text\">countOnes()</code>:</p>\n<ol>\n<li>Initialize a variable <code class=\"language-text\">count</code> to 0.</li>\n<li>Iterate through each character <code class=\"language-text\">c</code> in the string <code class=\"language-text\">str</code>:\n<ol>\n<li>If <code class=\"language-text\">c</code> is '1', increment <code class=\"language-text\">count</code> by 1.</li>\n</ol>\n</li>\n<li>Return <code class=\"language-text\">count</code>.</li>\n</ol>\n<h3>Source Code</h3>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">Scanner</span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Main</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// Create a Scanner object to read input from the user</span>\n        <span class=\"token class-name\">Scanner</span> scan <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Scanner</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>in<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// Prompt the user to enter a positive whole number</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter a positive whole number: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">int</span> num <span class=\"token operator\">=</span> scan<span class=\"token punctuation\">.</span><span class=\"token function\">nextInt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// Close the scanner to free up resources</span>\n        scan<span class=\"token punctuation\">.</span><span class=\"token function\">close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// If the number is negative, display an error message and terminate the program</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>num <span class=\"token operator\">&lt;</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Error: number must be positive.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n\n        <span class=\"token comment\">// Convert the number to its binary equivalent</span>\n        <span class=\"token class-name\">String</span> binaryString <span class=\"token operator\">=</span> <span class=\"token function\">toBinaryString</span><span class=\"token punctuation\">(</span>num<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// Count the number of ones in the binary string</span>\n        <span class=\"token keyword\">int</span> numOnes <span class=\"token operator\">=</span> <span class=\"token function\">countOnes</span><span class=\"token punctuation\">(</span>binaryString<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// Print the binary equivalent of the number</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Binary equivalent: \"</span> <span class=\"token operator\">+</span> binaryString<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">//Print the number of ones in the binary string</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Number of 1's: \"</span> <span class=\"token operator\">+</span> numOnes<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token comment\">// If the number of ones is odd, print that the number is an Odious number</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>numOnes <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>num <span class=\"token operator\">+</span> <span class=\"token string\">\" is an Odious number.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token comment\">// Otherwise, print that the number is not an Odious number</span>\n        <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>num <span class=\"token operator\">+</span> <span class=\"token string\">\" is not an Odious number.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">/**\n     * Converts the given number to its binary equivalent as a string.\n     * @param num the number to convert\n     * @return the binary equivalent of the number as a string\n     */</span>\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">toBinaryString</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> num<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">String</span> binaryString <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// Iteratively divide the number by 2 and prepend the remainder to the binary string</span>\n        <span class=\"token comment\">// until the number becomes 0</span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>num <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            binaryString <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>num <span class=\"token operator\">%</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> binaryString<span class=\"token punctuation\">;</span>\n            num <span class=\"token operator\">/=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> binaryString<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">/**\n     * Counts the number of ones in the given string.\n     * @param str the string to count ones in\n     * @return the number of ones in the string\n     */</span>\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">int</span> <span class=\"token function\">countOnes</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">int</span> count <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// Iterate through each character in the string and count the ones</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> str<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">.</span><span class=\"token function\">charAt</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token char\">'1'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                count<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> count<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3>Variable tables</h3>\n<hr>\n<p>Method - <code class=\"language-text\">main()</code></p>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Variable</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\"><code class=\"language-text\">scan</code></td>\n<td align=\"left\"><code class=\"language-text\">Scanner</code></td>\n<td align=\"left\">A Scanner object used to read input from the user</td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">num</code></td>\n<td align=\"left\"><code class=\"language-text\">int</code></td>\n<td align=\"left\">The positive whole number entered by the user</td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">binaryString</code></td>\n<td align=\"left\"><code class=\"language-text\">String</code></td>\n<td align=\"left\">The binary equivalent of <code class=\"language-text\">num</code> as a string</td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">numOnes</code></td>\n<td align=\"left\"><code class=\"language-text\">int</code></td>\n<td align=\"left\">The number of ones in <code class=\"language-text\">binaryString</code></td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">args</code></td>\n<td align=\"left\"><code class=\"language-text\">String[]</code></td>\n<td align=\"left\">The command-line arguments passed to the program (unused in this program)</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Method - <code class=\"language-text\">toBinaryString()</code></p>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Variable</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\"><code class=\"language-text\">num</code></td>\n<td align=\"left\"><code class=\"language-text\">int</code></td>\n<td align=\"left\">The number to convert to a binary string</td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">binaryString</code></td>\n<td align=\"left\"><code class=\"language-text\">String</code></td>\n<td align=\"left\">The binary equivalent of <code class=\"language-text\">num</code> as a string (initialized to the empty string)</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p>Method - <code class=\"language-text\">countOnes()</code></p>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Variable</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\"><code class=\"language-text\">str</code></td>\n<td align=\"left\"><code class=\"language-text\">String</code></td>\n<td align=\"left\">The string to count the number of ones in</td>\n</tr>\n<tr>\n<td align=\"left\"><code class=\"language-text\">count</code></td>\n<td align=\"left\"><code class=\"language-text\">int</code></td>\n<td align=\"left\">The number of ones in <code class=\"language-text\">str</code> (initialized to 0)</td>\n</tr>\n</tbody>\n</table>\n<hr>","frontmatter":{"title":"Odious Number Program","description":"Writing a program in Java to check if a number entered is odious or not","date":"2023-01-08T00:00:00.000Z","slug":"/blog/odious-number-program","tags":["Java","School"]}}},"pageContext":{}},
    "staticQueryHashes": ["1994492073","2009693873","3081057667","3825832676"]}