2016-05-06 8 views
1
int main(){ 
    int input; 
    int bin = 0, i = 1; 
    print("Please input a number"); 
    input = num.parse(stdin.readLineSync()); 
    while(input > 0) 
    { 
     bin = bin + (input % 2)*i; 
     input = input/2; 
     i = i * 10; 
    } 


    return 0; 
} 

Es wurden unendliche Zahlen zurückgegeben.Beim Konvertieren von Dezimal in Binärcode stimmt etwas nicht.

+0

Abteilung gibt eine doppelte, die Sie in einen int zuweisen. Welchen Editor benutzen Sie? Ein Texteditor mit Dart-Unterstützung sollte Ihnen eine statische Warnung geben. –

+0

Ich verwende Sublime Text 3 – Trafalgar

+0

Verwenden Sie das Dart-Paket? https://packagecontrol.io/packages/Dart –

Antwort

4

Sie müssen nur darauf achten, Doppel Umwandlung in int: input = (input/2).floor()

Sehen Sie diese Arbeitscode:

void main() { 
    int input; 
    int bin = 0, i = 1; 
    input = 5; 
    while(input > 0) 
    { 
     bin = bin + (input % 2)*i; 
     input = (input/2).floor(); 
     i = i * 10; 
    } 

    print(bin); 
} 
+2

Da 'input' ein int ist, ist dies ein guter Anwendungsfall für die Ganzzahldivision:' input ~/= 2; '. Keine Konvertierung erforderlich. – Ganymede

+0

Eine weitere Option ist die Verwendung von "input >> = 1;", um das niedrigste Bit zu entfernen. – lrn