MultipleLoop.java
unknown
java
5 years ago
5.9 kB
11
Indexable
import java.util.Scanner;
public class MultipleLoop {
/**
* Helper method to identify if a given string is a binary string or not.
* Note that a binary string should only contain 0s or 1s. If the string contains any other character, then it is not binary.
*
* @param binary the binary string to be validated.
* @return true if the string is binary, else false.
*/
public static boolean isValidBinary(String binary) {
// throw exception if the string is null
if (binary == null) {
return false;
}
// loop through each character of the binary string
for (char ch : binary.toCharArray()) {
// return false if the current character is not 0 and not 1.
if (ch != '0' && ch != '1') {
return false;
}
}
// the control will come here if the string contains only 0s or 1s, hence return true.
return true;
}
/**
* Helper method to count the number of 0s in a binary string.
*
* @param binary the binary string to be validated.
* @return the number of 0s in the binary string.
* @throws IllegalArgumentException if the string is not binary
*/
public static int countZeroes(String binary) {
// throw an exception if the string is not binary
if (!isValidBinary(binary)) {
throw new IllegalArgumentException("THe given string is not binary..");
}
int zeroesCount = 0; // stores the count of 0s in the binary string
// loop through each character of the binary string
for (char ch : binary.toCharArray()) {
// increment zeroesCount by 1 if the current character is 0
if (ch == '0') {
zeroesCount++;
}
}
// return zeroesCount
return zeroesCount;
}
/**
* Helper method to count the number of 1s in a binary string.
*
* @param binary the binary string to be validated.
* @return the number of 1s in the binary string.
* @throws IllegalArgumentException if the string is not binary
*/
public static int countOnes(String binary) {
// throw an exception if the string is not binary
if (!isValidBinary(binary)) {
throw new IllegalArgumentException("THe given string is not binary..");
}
int onesCount = 0; // stores the count of 1s in the binary string
// loop through each character of the binary string
for (char ch : binary.toCharArray()) {
// increment zeroesCount by 1 if the current character is 1
if (ch == '1') {
onesCount++;
}
}
// return onesCount
return onesCount;
}
/**
* Helper method to print the menu.
*/
public static void menu() {
System.out.print("1 - Get Binary Code\n" +
"2 - Count Zeroes\n" +
"3 - Count Ones\n" +
"4 - Exit\n" +
"Enter your choice: ");
}
// driver code to test
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // used for taking system input
String binary = null; // stores the binary string inputted by user
// loop infinitely until the user enters "exit"
while (true) {
// print menu
menu();
// get the user choice
int choice = scanner.nextInt();
switch (choice) {
case 1:
// the user has opted to enter a binary string
// reset the binary string back to null
binary = null;
// prompt the user to enter a binary number
System.out.print("Enter a binary number: ");
// store the user inputted value into variable 'binary'
binary = scanner.next();
// keep iterating until the user has entered a valid binary string.
while (!isValidBinary(binary)) {
// prompt the user again to enter a binary number
System.out.print("Not a valid binary number, enter a binary number again: ");
// store the user inputted value into variable 'binary'
binary = scanner.next();
}
break;
case 2:
// the user has opted to count the number of 0s
try {
System.out.println("Number of zeroes = " + countZeroes(binary));
} catch (Exception e) {
// this catch block will execute if the user has not entered a valid binary string
System.out.println("Please enter a valid binary string first....");
}
break;
case 3:
// the user has opted to count the number of 1s
try {
System.out.println("Number of ones = " + countOnes(binary));
} catch (Exception e) {
// this catch block will execute if the user has not entered a valid binary string
System.out.println("Please enter a valid binary string first....");
}
break;
case 4:
// the user has opted to exit
System.out.println("Exiting. Good bye...");
System.exit(0);
default:
// the user has entered an invalid choice
System.out.println("Invalid choice entered, try again!!");
}
System.out.println();
}
}
}Editor is loading...