[Java] Binär till Decimal (90% klar, har fastnat)

Permalänk
Medlem

[Java] Binär till Decimal (90% klar, har fastnat)

Tja

Håller på med en uppgift där jag ska skapa ett litet program om omvandlar binära tal till decimaltal. Jag har lyckats med själva konverteringen men jag har problem att hitta en lösning där jag kan summera "printoutsen" jag får i forloopen. Kan någon kanske ge mig lite tips på en lösning?

Här är koden

import java.util.Scanner; import java.lang.Math; public class Bin2Dec { public static void main (String[] args){ Scanner scanner = new Scanner (System.in); System.out.println ("Skriv ett binärtal: "); String binTal = scanner.next(); int length = binTal.length(); StringBuffer buffer = new StringBuffer(binTal); buffer = buffer.reverse(); // reversa strängen String reverseString = buffer.toString(); for (int count = 0; count < length; count++) { char char1= reverseString.charAt(count); int i = Character.getNumericValue(char1); int decimalTal = (int) (i*Math.pow(2,count)); System.out.println(decimalTal); } } }

Och inmatning samt utskrift
Skriv ett binärtal:
1001

Utskrift:
1
0
0
8

Vill bara summera dessa printouts

Tack på förhand!

Permalänk
Medlem

Nu knackar jag inte Java men jag tror du förstår min tanke även om syntaxen är felaktig:

int decimalTal = decimalTal + (int) (i*Math.pow(2,count));

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

Före for-loopen:
int tot = 0;

I for-loopen:
Byt ut:
System.out.println(decimalTal);
..mot:
tot += decimalTal;

Efter for-loopen:
System.out.println(tot);

Tada.

Visa signatur

Behind every great fortune there is a crime. - Honoré de Balzac
simonb @ irc

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av zarkov
Nu knackar jag inte Java men jag tror du förstår min tanke även om syntaxen är felaktig:

int decimalTal = decimalTal + (int) (i*Math.pow(2,count));

Man kan ju inte addera något med något som inte har blivit initialiserat?

Edit: Tack för ovanstående svar! det var denna "strategi" jag letade efter TACK!

Permalänk
Medlem

Som sagt, jag kan inte Java, på min tid läste vi Basic och C i skolan

Jag och Movement föreslår samma sak, förutom att jag inte poängterade att variabeln skulle deklareras innan loopen. Att deklarera en variabel inne i en loop (och därmed återdeklarera den varje gång loopen körs) är inte speciellt snyggt, det lägger beslag på en massa minne i onödan.

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Citat:

Ursprungligen inskrivet av zarkov
Som sagt, jag kan inte Java, på min tid läste vi Basic och C i skolan

Jag och Movement föreslår samma sak, förutom att jag inte poängterade att variabeln skulle deklareras innan loopen. Att deklarera en variabel inne i en loop (och därmed återdeklarera den varje gång loopen körs) är inte speciellt snyggt, det lägger beslag på en massa minne i onödan.

Även om det skapas nya variablar är det ju miinimalt med minne som även kommer ur scopet när loopen har gått ett varv och därmed kommer den att plockas upp av garbage collect. Även om jag håller med om att det är onödigt är det ju inte märkbart :/

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Angående att ha en variabeldeklaration inne i loopen så följer personligen jag designprincipen att variabler ska ha så litet scope som möjligt, vilket i vissa fall kan innebära att man introducerar ett scope för att "bli av" med variabler. I vissa specifika fall kan du få prestandaproblem, men i de flesta fall är dagens kompilatorer tillräckligt smarta att hantera sådana här designprinciper. Av samma anledning återanvänder jag inte variabler vilket jag ofta har sett på labinlämningar att folk gör.

Permalänk
Citat:

Ursprungligen inskrivet av hivemind
Angående att ha en variabeldeklaration inne i loopen så följer personligen jag designprincipen att variabler ska ha så litet scope som möjligt, vilket i vissa fall kan innebära att man introducerar ett scope för att "bli av" med variabler. I vissa specifika fall kan du få prestandaproblem, men i de flesta fall är dagens kompilatorer tillräckligt smarta att hantera sådana här designprinciper. Av samma anledning återanvänder jag inte variabler vilket jag ofta har sett på labinlämningar att folk gör.

Precis... Om man inte kompilerar för debuggning kommer detta att hända. Man kan i visual studio kompilera för release och köra breakpoints och sen se vad som faktiskt händer.. Mycket sånt här löser kompilatorn själv

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase