import
java.util.*;
public
class
BaseChecker {
private
static
final
int
BINARY_BASE =
2
;
private
static
final
int
OCTAL_BASE =
8
;
private
static
final
int
DECIMAL_BASE =
10
;
private
static
final
int
HEXA_BASE =
16
;
private
static
final
int
BASE32_BASE =
32
;
public
static
void
main(String[] args) {
String binaryStr =
"1000101010001"
;
String decimalStr =
"45221"
;
String base32Str =
"AD22F"
;
String octalStr =
"7778A"
;
String hexStr =
"FAG463"
;
System.out.printf(
"Binary string %s is %s\n"
, binaryStr,
print(isValid(binaryStr, BINARY_BASE)));
System.out.printf(
"Octal string %s is %s\n"
, octalStr,
print(isValid(hexStr, OCTAL_BASE)));
System.out.printf(
"Decimal string %s is %s\n"
, decimalStr,
print(isValid(decimalStr, DECIMAL_BASE)));
System.out.printf(
"Hex string %s is %s\n"
, hexStr,
print(isValid(hexStr, HEXA_BASE)));
System.out.printf(
"Base32 string %s is %s\n"
, base32Str,
print(isValid(base32Str, BASE32_BASE)));
}
private
static
boolean
isValid(String numStr,
int
base) {
String validBinary =
"01"
;
String validOctal =
"01234567"
;
String validDecimal =
"0123456789"
;
String validHex =
"0123456789abcdefABCDEF"
;
String validBase32 =
"0123456789abcdefghijklmnopqrstuvABCDEFGHIJKLMNOPQRSTUV"
;
String validNumber =
null
;
if
(base == BINARY_BASE) {
validNumber = validBinary;
}
else
if
(base == OCTAL_BASE) {
validNumber = validOctal;
}
else
if
(base == DECIMAL_BASE) {
validNumber = validDecimal;
}
else
if
(base == HEXA_BASE) {
validNumber = validHex;
}
else
if
(base == BASE32_BASE) {
validNumber = validBase32;
}
else
{
throw
new
IllegalArgumentException(
"Invalid base encountered"
);
}
for
(
int
i =
0
; i < numStr.length(); i++) {
if
(validNumber.indexOf(numStr.charAt(i)) == -
1
) {
return
false
;
}
}
return
true
;
}
private
static
String print(
boolean
status) {
return
(status) ?
"Valid"
:
"Invalid"
;
}
}