mit void methode binärdarstellung

ElGrAnDiOs

Mitglied
hi,

ich steh grad irgendwie aufm schlauch. ich habe eine aufgabe, und zwar soll ich mithilfe einer methode
Code:
  public void binaer(int n) {
    if(n == 0 || n == 1) // Ausgabe n;
    else Ausgabe (binaer(n / 2) + (n % 2));
  }

die binärdarstellung einer natürlichen zahl n berechnen und auf dem bildschirm ausgeben, und das rekursiv.
da aber die methode dank des void keine ausgabe macht, weis ich grad nich wie ich es auf dem bildschirm ausgeben soll...

kann mir ma jemand nen denkanstoß geben ?

:confused:
 
Zuletzt bearbeitet:
void heißt die Methode hat keinen Rückgabewert, welcher zur aufrufenden Methode zurück geht....

Mit Ausgabe würde man Bildschirmausgabe meinen^^..also Konsole z.B.

P.S.: Unter Java gibts zum einfachen Konvertieren ein Interger.toBinaryString(int)...was aber denke ich mal hier nicht gewünscht ist^^

Aber normalerweise teilt man die Zahl immer durch 2 und schaut sich den Restwert an. (Modulo).
 
ja, genau, also bildschirmausgabe ist gemeint.

und nein, ich muss das ganze per eigener methode und rekursion lösen (was ja nich das problem ist)

aber wie gebe ich bei einem aufruf z.B.
Code:
binaer(100)

die binärdarstellung der Zahl 100 auf dem Bildschirm aus. mit return is ja nix, da die funktion ja void ist, und wenn ich in der methode selber System.out.print... machen will, sagt er das das packet system nich verfügbar ist...

wie kann ich das bewerkstelligen, also z.B. wenn ich

Code:
System.Out.Println(binaer(100));

das die methode binaer den Binärwert für 100 berechnet und in form einen String zurückgibt ?
 
die binärdarstellung der Zahl 100 auf dem Bildschirm aus. mit return is ja nix, da die funktion ja void ist, und wenn ich in der methode selber System.out.print... machen will, sagt er das das packet system nich verfügbar ist...
...
Code:
System.Out.Println(binaer(100));

Java ist SEHR pingelig, was Groß- und Kleinschreibung angeht. Es heißt: System.out.println("Dein Text");

Das "Packet" System muss immer verfügbar sein ... geht eigentlich gar nicht anders... sonst ist irgendwas sehr faul bei dir. Poste am besten mal ein bisschen Quellcode wo du das benutzt und es nicht klappt.
 
Danke du hast Recht, es lag an der Groß/Kleinschreibung.
Aber wenn ich jetzt das hier versuche
Code:
public class S5T1{
  public void binaer(int n) {
    String a = "0";
    if(n == 0 || n == 1) System.out.println(n);
    else {
      a = (binaer((n/2)) + (n % 2));
      System.out.println(a);
    }
  }
}

sagt mir der compiler:

Code:
Compiliere C:\Dokumente und Einstellungen\fabiO\Desktop\Strukturiertes Programmieren\Uebungsserien\S 5\S5T1.java mit Java-Compiler
S5T1.java:6:18: 'void' type not allowed here
      a = (binaer((n/2)) + (n % 2));
                 ^
1 error

eine idee ?
 
Du gibst in jedem Schritt eine Zahl aus und rufst mit dem Rest deine Methode wieder auf die dann wieder eine Zahl ausgibt. Wenn du System.out.print benutzt steht dann alles in einer Zeile.
 
So sollte es gehen
Java:
public String  a = "";
public String  binaer = "";
public void binaer(int n) {
     if(n == 0 || n == 1) showBinaer();
     else {
          a+=(n % 2);
          binaer(n/2);
     }
}
public void showBinaer(){
      for(int i=a.length()-1;i>=0;i--) binaer+=a.charAt(i);
}
 
Zuletzt bearbeitet:
Zurück