Ich denke, die Bedingung in der Schleife nicht korrekt ist:
for(int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2)
Beachten Sie, dass diese Schleifen während tempDecimal gleich 0 ist, Das bedeutet, dass die Schleife bei Nicht-Null-Eingängen überhaupt keine Schleife bilden sollte und für immer auf Null-Eingänge laufen wird. Versuchen Sie Umschreiben es als
for(int tempDecimal = decimal; 0 != tempDecimal; tempDecimal /= 2)
Auch achten Sie auf 0 als Eingang und für negative Zahlen als Eingänge; Sie werden mit Ihrem derzeitigen Ansatz nicht korrekt ausgehen.
Einige andere kleinere Nits:
- ich stark Ihr Code korrekt und setzen Räume in-zwischen den Betreibern zur besseren Lesbarkeit vorschlagen einrücken. Es macht den Code viel einfacher zu lesen, und ich denke, Sie hätten den Fehler leichter entdeckt, wenn Sie mehr Leerzeichen hätten.
- Es gibt keinen Grund, eine zweite Variable
tempDecimal
in dieser Funktion zu erstellen. Java-Parameter werden als Wert übergeben. Änderungen, die Sie am Argument vornehmen, werden daher nicht im Aufrufer angezeigt. Da Sie den Wert decimal
nirgendwo anders verwenden, ist die zusätzliche Variable überflüssig.
Hoffe, das hilft!
Hier gibt es keine Dezimalstelle Was Sie wirklich tun, ist das Konvertieren in druckbares ASCII. – EJP