Dezimalzahl in Dualzahl.

Status
Nicht offen für weitere Antworten.

CaptainItalo

Mitglied
Hallo,
ich habe ein Problem.
Ich muss ein Programm schreiben,welches bei einer Auswahl von Zahlen zwischen 0 und 31 eine Dualzahl ausgibt.
Also soll mein Programm ausgeben am Beispiel 23:
23 % 2 = 11 Rest 1
11 % 2 = 5 Rest 1
5 % 2 = 2 Rest 1
2 % 2 = 1 Rest 0
1 % 2 = 0 Rest 1

Ich habe folgendes programmiert:

Code:
import javax.swing.JOptionPane;

public class DecimalDualConversion {

	
	public static void main(String[] args) {
		  String s = JOptionPane.showInputDialog( "Bitte geben Sie eine positive ganze Dezimalzahl zwischen 0 und 31 ein: " ); 
		  int dez = Integer.parseInt( s );
		  int dualzahl,rest;
		  if (dez <= 31){
		        if (dez % 2 == 1) {
		        	dualzahl = dez / 2;
		        	rest = 1;
		        }
		        else  {
		        	dualzahl = dez / 2;
		        	rest = 0;
		        	}
		  System.out.println(dez+" : 2 = "+dualzahl+" Rest "+rest);
		  }
		  else if (dez == 0) {
			  System.out.println("0 : 2 = 0 Rest 0");
		  }
		  else if (dez >= 32) {
			  System.out.println("Bitte geben Sie eine Zahl zwischen 0 und 31 ein!");
		  }
		  else if (dez < 0) {
			  System.out.println("Bitte geben Sie eine Zahl zwischen 0 und 31 ein!");
		  }
	}
}

-> ich erhalte nur eine Zeile und nicht wie im Beispiel fünf. Die Rechnungen stimmen...
Könnte mir jemand einen Anstoß geben. Bitte bedenkt, dass ich bislang noch nicht vielmehr als Schleifen hatte...

*Code-Tags eingefügt - Wildcard*
 
CaptainItalo hat gesagt.:
Könnte mir jemand einen Anstoß geben. Bitte bedenkt, dass ich bislang noch nicht vielmehr als Schleifen hatte...
Warum benutzt du dann keine?
Ist doch klar das der Code ohne Schleife oder Rekursion nicht mehr als einmal ausgeführt wird :bahnhof:
 
Ich habe versuch eine while-Schleife einzubauen, aber das bringt leider nichts...
Auch mit einer for-Schleife komme ich nicht auch eine Zahl, wie oft durch die Schleife gelaufen werden soll. Höchstens mit Wurzalberechnung, aber das hatten wir absolut noch nicht.
 
Genau, das habe ich schon probiert & ich habe noch nicht gelernt, wie man ein Programm abbricht ( das Programm einfach zu schließen ist wohl nicht die optimale Sache)...
 
Code:
import javax.swing.*;

public class Test {

  public static void main(String[] args) {
	  String s = JOptionPane.showInputDialog( "Bitte geben Sie eine positive ganze Dezimalzahl zwischen 0 und 31 ein: " );
      int dez = Integer.parseInt( s );
      int er=dez/2,
      rest=dez%2;
      
      while(er!=0){
    	  System.out.println(dez+" % 2 = "+er +" Rest "+rest );
    	  dez=er;
    	  er=dez/2;
    	  rest=dez%2;
      }
  
      System.out.println(dez+" % 2 = "+er +" Rest "+rest );
  
  }
}
 
Gut, zur schöneren Ausgabe habe ich noch einige if-Schleifen eingebaut:

public static void main(String[] args) {
String s = JOptionPane.showInputDialog( "Bitte geben Sie eine positive ganze Dezimalzahl zwischen 0 und 31 ein: " );
int dezi = Integer.parseInt( s );
int dual=dezi/2;
int rest=dezi%2;

while(dual!=0){
if (dual>=10){
System.out.println(dezi+" % 2 = "+dual +" Rest "+rest );
dezi=dual;
dual=dezi/2;
rest=dezi%2;

}
else if (dezi>=10){
System.out.println(dezi+" % 2 = "+dual +" Rest "+rest );
dezi=dual;
dual=dezi/2;
rest=dezi%2;

}
else {
System.out.println(" "+dezi+" % 2 = "+dual +" Rest "+rest );
dezi=dual;
dual=dezi/2;
rest=dezi%2;

}

}

System.out.println(" "+dezi+" % 2 = "+dual +" Rest "+rest );
//int[] gesamteDualzahl = {rest};
//System.out.println(gesamteDualzahl);
System.out.println(rest);
}

Es gibt das aus, was ich will. Jedoch soll ich noch nach der Ausgabe der einzelnen Reihen noch die gesamte Dualzahl ausgegeben werden. Ich habe nur die letzte Ziffer. Anstelle von 23 -> 11101 habe ich nur die letzte 1.
Ich habe versucht in die einzelnen if-Schleifen ein Array einzubauen, aber das klappt nicht so ganz.
Gibt es eine Möglichkeit dieses mir Arrays zu lösen?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben