The code converts hexadecimal into octal. The function is working, but it takes more than a second to process the input. How can I optimize this?
import java.util.Scanner;
public class BasicTranformSixteenToEight {
public static void toBinaryTransform(int n, char[][] arry,
String[] arryBinaryStr) {
String[] arryOctalStr = new String[10];
String str = "";
StringBuilder octalStb = new StringBuilder();
StringBuilder binaryStb = new StringBuilder();
String[] arryOctalBinaryStr = { "000", "001", "010", "011", "100",
"101", "110", "111" };
for (int i = 0; i < n; i++) {
arryBinaryStr[i] = "";
for (int j = 0; j < arry[i].length; j++) {
switch (arry[i][j]) {
case '0':
binaryStb.append("0000");
break;
case '1':
binaryStb.append("0001");
break;
case '2':
binaryStb.append("0010");
break;
case '3':
binaryStb.append("0011");
break;
case '4':
binaryStb.append("0100");
break;
case '5':
binaryStb.append("0101");
break;
case '6':
binaryStb.append("0110");
break;
case '7':
binaryStb.append("0111");
break;
case '8':
binaryStb.append("1000");
break;
case '9':
binaryStb.append("1001");
break;
case 'A':
binaryStb.append("1010");
break;
case 'B':
binaryStb.append("1011");
break;
case 'C':
binaryStb.append("1100");
break;
case 'D':
binaryStb.append("1101");
break;
case 'E':
binaryStb.append("1110");
break;
case 'F':
binaryStb.append("1111");
break;
default:
break;
}
arryBinaryStr[i] = binaryStb.toString();
}
if (arryBinaryStr[i].length() % 3 == 1) { // Correct the Binary in order to convert it into Octal.
arryBinaryStr[i] = "00" + arryBinaryStr[i];
} else if (arryBinaryStr[i].length() % 3 == 2) {
arryBinaryStr[i] = "0" + arryBinaryStr[i];
}
arryOctalStr[i] = "";
for (int j = 0; j < arryBinaryStr[i].length() / 3; j++) { //convert Binary into Octal
str = arryBinaryStr[i].substring(j * 3, j * 3 + 3);
for (int k = 0; k <= 7; k++) {
if (str.equals(arryOctalBinaryStr[k])) {
octalStb.append(k);
}
arryOctalStr[i] = octalStb.toString();
}
}
str = arryOctalStr[i].substring(0, 1);
if (str.equals("0")) { // Remove the first zero and print Octal.
System.out.println(arryOctalStr[i].substring(1,
arryOctalStr[i].length()));
} else {
System.out.println(arryOctalStr[i]);
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
char[][] arry = new char[10][100000];
String[] arryHexStr = new String[10];
if (n >= 1 && n <= 10) {
for (int i = 0; i < n; i++) {
String number = sc.next();
if (number.length() <= 100000) {
arry[i] = number.toCharArray();
}
}
// binaryTransform(n,arry,arryHexStr);
toBinaryTransform(n, arry, arryHexStr);
}
}
}
arrayBinaryStr
argument? \$\endgroup\$