In: Computer Science
Nice Number Programming:
Nice program ask user to enter three integers from keyboard (java
console), the three integers
represent left bound, right bound and arbitrary digit ‘m’, where
left bound is less than right bound.
Program should print all nice numbers in the given range that
doesn’t contain digit 'm'. The number is
nice if its every digit is larger than the sum of digits which are
on the right side of that digit. For example
741 is a nice number since 4> 1, and 7> 4+1. with digit
m=2
Write a complete program in Java that Call only One method
(niceNumbers method) that will print all nice
numbers excluding a given digit ‘m’ that also entered by user
?
Input Sample :
Enter Left bound: 740
Enter Right bound:850
Enter digit to exclude it:2
Output sample:
Nice Numbers in Range Left=740, Right=850 with exclude digit m= 2
are:
740 741 750 751 760 810 830 831 840 841 843 850
Your method prototype is like this:
public static void niceNumbers(int left, int right, int dight)
{
Here is the Java code to the given question.
Detailed comments are added for better understanding.
Two sample outputs are added at the end.
import java.util.Scanner;
public class NiceNumber {
public static void niceNumbers(int left, int right, int digit) {
int sum; /*used to store the sum of all the digits which are on the right side of present digit*/
int currentDigit; /*used to store the current digit being processed*/
int currentNumber; /*used to store the current number being processed*/
System.out.println("Nice Numbers in Range Left="+left+", Right="+right+" with exclude digit m="+digit+" are:");
for(int i=left;i<=right;i++){ /*runs a loop from left bound to right bound*/
currentNumber=i; /*store the value of current 'i' in the variable 'currentNumber'*/
currentDigit=currentNumber%10; /*extracts the last digit from currentNumber and stores it in variable 'currentDigit'*/
currentNumber=currentNumber/10; /*divides the currentNumber by 10*/
sum=currentDigit; /*makes sum equal to the last digit of the number*/
if(currentDigit==digit){ /*checks if the currentDigit is equal to the digit passed to the method*/
continue; /*This number is not nice number.So, the current iteration is stopped and now program moves to check next number*/
}
if(currentNumber==0){ /*This means that the number in current iteration is a single digit number.So, it is a nice number*/
System.out.print(i+" "); /*As 'i' contains the value of currentNumber at the start of this for loop iteration, the value of i is printed out*/
}
while(currentNumber>0){ /*runs the loop as long as currentNumber is greater than 0*/
currentDigit=currentNumber%10; /*gets the last digit of the currentNumber*/
currentNumber=currentNumber/10; /*divides currentNumber by 10*/
if(currentDigit==digit){ /*checks if current digit is equal to the digit passed to the number*/
break; /*This number is not a nice number.So, the while loop is terminated */
}
else if(currentDigit<=sum){ /*checks if current digit is less than or equal to sum of all the digits to the right of it*/
break; /*This number is not a nice number.So, the while loop is terminated */
}
sum=sum+currentDigit; /*The sum of all the digits is incremented by the currentDigit value*/
if(currentNumber==0){ /*checks if all the digits of the currentNumber are checked , which means that the value of current number at the start of for loop is a nice number*/
System.out.print(i+" "); /*As 'i' contains the value of currentNumber at the start of this for loop iteration, the value of i is printed out*/
}
}
}
}
public static void main(String[] args){
int left; /*used to store left bound*/
int right; /*used to store right bound*/
int digit; /*used to store arbitrary digit*/
Scanner scanner=new Scanner(System.in); /*creates new Scanner object*/
System.out.println("Enter the left bound :");
left=scanner.nextInt();
System.out.println("Enter the right bound :");
right=scanner.nextInt();
System.out.println("Enter the arbitrary digit :");
digit=scanner.nextInt();
niceNumbers(left,right,digit); /*calls the niceNumbers() method by passing left,right and digit as arguments*/
}
}
Sample Output-1:
Sample output-2: