I am trying to read a sequence of random characters, integers and symbols from the standard inputstream, split it into 3 separate arrays (uppercase, lowercase and numeric) and print them in that order using standard Java API and JDK7.
Is there any other(better) way of dong the same?
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String characters = bufferedReader.readLine();
char[] chars = characters.toCharArray();
List<Character> characterList = new ArrayList<>(chars.length);
for (char c : chars) {
if (Character.isUpperCase(c)) {
characterList.add(c);
} else if (Character.isLowerCase(c)) {
characterList.add(c);
} else if (Character.isDigit(c)) {
characterList.add(c);
}
}
StringBuilder uppercaseStringBuilder = new StringBuilder();
StringBuilder lowercaseStringBuilder = new StringBuilder();
StringBuilder numericStringBuilder = new StringBuilder();
for (Character character : characterList) {
if (Character.isUpperCase(character)) {
uppercaseStringBuilder.append(character);
} else if (Character.isLowerCase(character)) {
lowercaseStringBuilder.append(character);
} else if (Character.isDigit(character)) {
numericStringBuilder.append(character);
}
}
char[] uppercaseChars = uppercaseStringBuilder.toString().toCharArray();
char[] lowercaseChars = lowercaseStringBuilder.toString().toCharArray();
char[] numericChars = numericStringBuilder.toString().toCharArray();
for (char uc : uppercaseChars) {
System.out.print(uc);
}
System.out.println();
for (char lc : lowercaseChars) {
System.out.print(lc);
}
System.out.println();
for (char nos : numericChars) {
System.out.print(nos);
}
}