Hallo,
Ich habe zwei Methoden implementiert, die als Parameter ein Array mit boolean-Werten übergeben bekommen und eine Zahl darstellen. Die Zahl soll mittels der Methode in einen Octal-String umgewandelt werden. Funktioniert auch soweit - fast! Ab dem 10. Array Eintrag ist die Berechnung von toOctalString() falsch. Kann mir wer erklären wieso?
Ich habe zwei Methoden implementiert, die als Parameter ein Array mit boolean-Werten übergeben bekommen und eine Zahl darstellen. Die Zahl soll mittels der Methode in einen Octal-String umgewandelt werden. Funktioniert auch soweit - fast! Ab dem 10. Array Eintrag ist die Berechnung von toOctalString() falsch. Kann mir wer erklären wieso?
Java:
public class Test
{
public static void main(String[] args)
{
boolean[] test1 = {false, true, false, true, true, false, false, false, false, false};
System.out.println("test1: " +toOctalString(test1));
System.out.println("test2: " +toOctalString1(test1));
}
public static String toBinaryString(boolean[] number)
{
String rep = "";
for (int i = 0; i < number.length; i++) {
if (number[i]) rep += "1";
else rep += "0";
}
return rep;
}
public static String toOctalString1(boolean[] number)
{
return Integer.toOctalString(Integer.parseInt(toBinaryString(number),2));
}
public static String toOctalString(boolean[] number)
{
String rep = "";
String str = "";
for (int i=0; i<number.length; i++)
{
if (number[i] == true)
rep = rep +"1";
else rep = rep +"0";
}
while (rep.length() % 3 != 0)
rep = "0" +rep;
if (rep.length() % 3 == 0)
{
for (int i=0; i<rep.length(); i++)
{
String buffer = rep.substring(0, 3);
if (buffer.equals("000"))
str = str + "0";
else if (buffer.equals("001"))
str = str + "1";
else if (buffer.equals("010"))
str = str + "2";
else if (buffer.equals("011"))
str = str + "3";
else if (buffer.equals("100"))
str = str + "4";
else if (buffer.equals("101"))
str = str + "5";
else if (buffer.equals("110"))
str = str + "6";
else if (buffer.equals("111"))
str = str + "7";
rep = rep.substring(3, rep.length());
}
}
return str;
}
}