Konvertieren von Dezimal zu Binär in Java

8

Ich versuche einen Code zu schreiben, der eine Zahl in eine binäre umwandelt, und das ist was ich geschrieben habe. Es gibt mir ein paar Fehler in Eclipse, die ich nicht verstehe. Was stimmt damit nicht? Irgendwelche anderen Vorschläge? Ich würde gerne lernen und hören für Kommentare, um es zu beheben. Danke.

%Vor%

Die Fehlermeldungen:

  1. Die Methode parseInt(String) im Typ Integer gilt nicht für die Argumente ( String[] )
  2. Mehrere Markierungen in dieser Zeile
    • Syntaxfehler beim Token " ( ",; erwartet
    • Syntaxfehler beim Token " ) ",; erwartet
    • void ist ein ungültiger Typ für die Variable Binary
  3. Mehrere Markierungen in dieser Zeile
    • Syntaxfehler beim Token "mod", ungültiger AssignmentOperator
    • Syntaxfehler im Token "mod", ungültiger AssignmentOperator.
Unknown user 05.03.2011, 13:04
quelle

9 Antworten

16

Integer.toBinaryString (int) sollte den Trick machen!

Und übrigens, korrigieren Sie Ihre Syntax, wenn Sie Eclipse verwenden Ich bin mir sicher, dass er sich über viele Fehler beschwert.

Arbeitscode:

%Vor%     
krtek 05.03.2011, 13:08
quelle
7

Vielleicht möchten Sie toBinaryString() nicht verwenden. Du hast gesagt, dass du gerade lernst, also kannst du es selbst so machen:

%Vor%     
Bernd Elkemann 05.03.2011 13:19
quelle
1

Ich schlage vor, dass Sie Ihr Programm zuerst in Ihrer IDE kompilieren lassen. Wenn Sie keine IDE verwenden, schlage ich vor, dass Sie eine kostenlose bekommen. Dies wird Ihnen zeigen, wo Ihre Fehler sind und ich schlage vor, dass Sie die Fehler korrigieren, bis sie kompiliert werden, bevor Sie sich Gedanken darüber machen, wie Sie sie verbessern können.

    
Peter Lawrey 05.03.2011 13:07
quelle
1

Es gibt zwei Hauptprobleme, die Sie ansprechen müssen:

  • Deklarieren Sie keine Methode in einer anderen Methode.
  • Ihre Schleife wird niemals enden.

Zum ersten haben die Leute bereits darauf hingewiesen, wie man diese Methode schreibt. Beachten Sie, dass normale Methodennamen in Java normalerweise mit dem ersten Buchstaben in Kleinbuchstaben geschrieben werden.

Zweitens ändern Sie niemals den Wert von int1 , sodass Sie das LSB der Eingabe in einer engen Schleife ausgeben. Versuchen Sie etwas wie:

%Vor%

Erläuterung:

  • int1 & amp; 1: das ist eine binäre und. Sie "wählt" das kleinste Bit (LSB) aus, d. H. (A & amp; 1) ist eins für ungerade Zahlen, Null für gerade Zahlen.
  • int1 & gt; & gt; 1: Das ist eine Rechtsverschiebung. Es verschiebt alle Bits um einen Slot (& gt; & gt; 3 würde sich um 3 Slots nach unten bewegen). LSB (Bit 0) wird verworfen, Bit 1 wird zu LSB, Bit 2 wird zu Bit Eins, etc ... (ein & gt; & gt; 0) tut überhaupt nichts, hinterlässt ein intaktes Bit.

Dann werden Sie bemerken, dass Sie die Ziffern in der "falschen Reihenfolge" drucken - es ist natürlicher, sie MSB zu LSB gedruckt zu haben. Sie geben rückwärts aus. Um das zu beheben, wirst du wahrscheinlich mit einer for -Schleife besser dran sein und jedes Bit von MSB auf LSB überprüfen.

Die Idee für die for-Schleife wäre, jedes der 32 Bits im int zu betrachten, beginnend mit dem MSB, so dass sie von links nach rechts gedruckt werden. So etwas Ähnliches

%Vor%

1<<i ist eine Verschiebung nach links. Ähnlich der rechten Verschiebung, aber in die andere Richtung. (Ich habe das überhaupt nicht getestet.)

Sobald Sie das zur Arbeit bringen, schlage ich als weitere Übung vor, dass Sie versuchen, dasselbe zu tun, aber die führenden Nullen nicht auszudrucken.

    
Mat 05.03.2011 13:22
quelle
1

Für den Anfang haben Sie eine Methode in einer Methode deklariert. Die Hauptmethode ist die Methode, die beim Ausführen der Klasse zuerst ausgeführt wird. ParseInt nimmt einen String, während args ein Array von Strings ist, also müssen wir es nehmen der erste (0-basierte) Index des Arrays.

mod ist kein gültiger Operator, die gewünschte Syntax war %

Sie können System.out.print verwenden, um in derselben Zeile statt in println

zu drucken

Probieren Sie diese Korrekturen aus und lassen Sie mich wissen, wie Sie vorankommen:

%Vor%     
TimCodes.NET 05.03.2011 13:11
quelle
0

Hier ist ein kleiner Bittesting-Code, den ich für Android gemacht habe.

int myres = bitTest (7, 128);

%Vor%

Beste Grüße Mikael Andersson

    
Mikael Andersson 20.07.2011 19:02
quelle
0
%Vor%     
user2991730 07.09.2014 10:43
quelle
0

Nun, zuerst nehme ich an, dass Sie über Fehlermeldungen Bescheid wissen. Zweitens ist Ihr Code düster (Syntax und Einrückung sind nicht korrekt). Ich würde den Code unten vorschlagen,

%Vor%

Hoffe es hilft !!

    
Shiva 17.11.2017 12:49
quelle
-1
%Vor%     
george ghawali 17.12.2016 18:35
quelle

Tags und Links