Hallo zusammen, ich habe das Problem, dass ich gerne eine Zahl von Binärcode in eine Dezimalzahl umrechnen möchte. Mir ist klar, dass dies auf einem einfacheren Weg möglich wäre, aber ich würde das gerne ausrechnen so wie ich das normal mache also z.B. 0110 -> 0*2^0 + 1*2^1 + 1* 2^2 usw
Dies habe ich wie folgt versucht zu lösen und mit einem TestDriver zu testen:
Der TestDriver sieht wie folgt aus:
Beim Ausführen kommen dann folgende Fehlermeldungen:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(Unknown Source)
at NoSignConversion.run(NoSignConversion.java:14)
at test.main(test.java:10)
Hab in Eclipse keine Fehler angezeigt also versteh ich es nicht ganz, ausserdem sagt er mir dass ich import java.lang.*; gar nicht brauche, da ich es nie verwende, aber ich hab doch die Math Methode benutzt oder? Würde mich über eine Antwort freuen. danke schonmal MfG
Dies habe ich wie folgt versucht zu lösen und mit einem TestDriver zu testen:
Java:
import java.lang.*;
public class NoSignConversion {
public int run(int zahl){
int value;
long length = Math.round((Math.log10(zahl)+1));
int lengthint = (int)length;
int sum = 0;
int i = 0;
while (lengthint>0) {
value = Integer.toString(zahl).charAt(lengthint);
sum += Math.pow(2, i)*value;
lengthint--;
i++;}
return sum;
}
}
Der TestDriver sieht wie folgt aus:
Java:
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NoSignConversion NSC = new NoSignConversion();
int zahl = NSC.run(11);
System.out.println(zahl);
}
}
Beim Ausführen kommen dann folgende Fehlermeldungen:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(Unknown Source)
at NoSignConversion.run(NoSignConversion.java:14)
at test.main(test.java:10)
Hab in Eclipse keine Fehler angezeigt also versteh ich es nicht ganz, ausserdem sagt er mir dass ich import java.lang.*; gar nicht brauche, da ich es nie verwende, aber ich hab doch die Math Methode benutzt oder? Würde mich über eine Antwort freuen. danke schonmal MfG