Hallo ich hätte eine Frage.
Vorab ich bin Anfänger in Bereich JAVA
- ergebniss Null (if abfrage funktioniert nich)
- length medode gibt immer um 3 Zuviel aus warum ???
Java:
packageDreieckVläche;publicclassTest{publicstaticvoidmain(String[] args){String dez ="00111000";//56int value =0;char one =1;System.out.println(dez.length());// nur zum test aber Zahl immer um 3 zu hochfor(int i =0; i <(dez.length());i++){System.out.println(dez.charAt(i));// nur Testif("1"== dez.charAt(i)){
value +=(int)Math.pow(2,i);}}System.out.println(value);}}
Danke für die rasche Rückmeldung.
ich würde den wert 8 erwarten es kommt aber 9
ich habe jetzt auch schon von "1" auf 1 aber wir kommt bei meinen Logarithmus kein sinnvoller Wert herraus.
Kann ich euch um etwas Bitten. wäre wirklich nett.
Meine aufgaben Stellung ist:
Schreiben sie eine Funktion die Einen String zerlegt in den ein beliebige Binärezahl steht und ermitteln sie den Dezimahlen wert und geben sie in aus.
- es muss nich als Funktion geschrieben sein das bekomme ich dann schon hin.
-Bitte zeigt mir dann auch noch jemand wie ich in normal Fall löst bzw. welchen Datentyp ich in Normalfall bei binär habe.
Erstmal Dein Code mit Code-Tags außenrum, damit das hier vernünftig angezeigt wird:
Java:
publicclassTest{publicstaticvoidmain(String[] args){String dez ="00111000";// 56int value =0;char one =1;System.out.println(dez.length());for(int i =0; i <(dez.length());i++){System.out.println(dez.charAt(i));if("1"== dez.charAt(i)){
value +=(int)Math.pow(2,i);}}System.out.println(value);}}
Dazu ein paar Hinweise:
Mit "char one = 1" weist Du der Variablen one den Zahlenwert 1 zu. Du willst aber das Zeichen '1' zuweisen: char one = '1';
Es wurde ja schon gesagt, dass Du mit "1" == dez.charAt(i) versuchst, ein Zeichen mit einem String zu vergleichen. Mit der Änderung von 1. kannst Du schreiben "if (one == dez.charAt(i))". Wenn Du ohne Variable one auskommen willst, kannst Du auch direkt vergleichen "if ('1' == dez.charAt(i))"
Die Berechnung ist falsch: Du rechnest als wäre die Stelle ganz links die Einerstelle.
Wenn bei Dir dez.length() etwas anderes als 8 liefert, dann stimmt etwas mit Deinem dez nicht. Evtl. ein Leerzeichen am Anfang/Ende des Strings?