# Dezimalzahl in Dualzahl.



## CaptainItalo (19. Apr 2007)

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:


```
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*


----------



## Wildcard (19. Apr 2007)

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:


----------



## CaptainItalo (19. Apr 2007)

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.


----------



## Ariol (19. Apr 2007)

versuchs mal mit "while(dez <= 31)" anstatt "if(dez <= 31)"


----------



## Wildcard (19. Apr 2007)

Ariol hat gesagt.:
			
		

> versuchs mal mit "while(dez <= 31)" anstatt "if(dez <= 31)"


Das wird dann aber eine Weile laufen  :shock:


----------



## CaptainItalo (19. Apr 2007)

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)...


----------



## der Pate (19. Apr 2007)

versuchs mal mit:

```
while(dez <= 31 && dez>=0)
```


----------



## Marcel_Handball (19. Apr 2007)

```
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 );
  
  }
}
```


----------



## CaptainItalo (20. Apr 2007)

Danke!
Jetzt passt es & hätte ich es abends nochmal gesehen, hätte ich auch vernünftig ein Auge zu bekommen können...


----------



## CaptainItalo (20. Apr 2007)

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?


----------



## CaptainItalo (21. Apr 2007)

Danke, ich habe es jetzt!
Wie macht man an einen Threat einen Haken.


----------



## Marcel_Handball (21. Apr 2007)

ganz unten links im Thread den Haken anklicken
(aber setzt bitte noch die code-Tags in der Antowrt hier drüber)


----------

