Duck Number ?
If a number contains one or more zeroes but does not start with a zero, it is called a Duck Number. Examples of Duck numbers are 2405, 452094, 102 etc. Examples of numbers which are not Duck numbers are 1423, 5736, 0198 etc.
There are different methods to check for a duck number in java. This post will detail out a couple of those methods.
Read the number to be tested as a String from user input. Check if the String has a 0 using its
contains
method and check if the string begins with a 0 using startsWith
method of String class.Now apply appropriate logical operators to ensure that the string has one or more 0s and it does not begin with a 0.
import java.util.Scanner;
public class DuckNumberTester {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number");
// read the number as string
String number = reader.nextLine();
// close reader
reader.close();
//check whether number has 0 and it does not begins with 0
if (number.contains("0") && !number.startsWith("0")) {
System.out.println("Number is a Duck number");
} else {
System.out.println("Number is not a Duck number");
}
}
}
Output
Enter a number
3456
Number is not a Duck number
Enter a number
506
Number is a Duck number
Method 2 : Iterating the number and checking every digit
Iterate over the number read as String and compare each digit with 0 using charAt
method of java.lang.String
class.
If the digit is a zero, increment a counter variable. When iterating over the number and comparing the digit with 0, a check is performed whether the digit is the first digit.
If the digit is a 0 and is the first digit, a flag is set and the loop is terminated, since if the first digit is 0, the number cannot be a Duck number and there is no need of going forward.
At the end of loop, the condition that the number does not start with a 0 and has at least 1 zero is checked to determine whether the number is a Duck number or not.
import java.util.Scanner;
public class DuckNumberTester {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number");
// read the number as string
String number = reader.nextLine();
// close reader
reader.close();
int zeroCount = 0;
boolean startsWithZero = false;
// iterate over the number
for (int digitIndex = 0; digitIndex < number.length(); digitIndex++) {
// get digit at current index
char digit = number.charAt(digitIndex);
// check if the digit is a 0
if (digit == '0') {
// check if this is the first digit
if (digitIndex == 0) {
// set a flag and terminate the loop
startsWithZero = true;
break;
}
// increment number of zeroes
zeroCount++;
}
}
// check if the number does not start with a zero and contains at least 1 zero
if (!startsWithZero && zeroCount > 0) {
System.out.println("Number is a Duck number");
} else {
System.out.println("Number is not a Duck number");
}
}
}
Output
Enter a number
4508
Number is a Duck number
Enter a number
567
Number is not a Duck number
Hope the article was useful.