mit void methode binärdarstellung

Man kann in einem System.out.print oder println keinen void mitgeben, weil void keine Rueckgabe hat. Entweder man macht direkt die ausgabe IN der void methode oder man aendert die void in String/ int/ double etc um
 
Eine kleine Änderung musste noch gemacht werden. Wenn zum schluss eine 1 übrrig bleibt muss die ja auch noch in den String geschrieben werden.
Java:
public String  a = "";
public String  binaer = "";
public void binaer(int n) {
     if(n == 1) {a+=(n);showBinaer();}
     else if(n == 0){showBinaer();}
     else {
          a+=(n % 2);
          binaer(n/2);
     }
}
public void showBinaer()
{
     for(int i=a.length()-1;i>=0;i--) binaer+=a.charAt(i);
     System.out.println(binaer);
}

Denkbar wäre auch die
Java:
public void binaer(int n,String erg)
Du Übergibst einen leeren string der nach abarbeitung deinen Binärcode enthält
 
Zuletzt bearbeitet:
sorry bin leider ein totaler fisch... wie soll hier die ausgabe erfolgen, nachdem ich ein n eingebeben hab?

das programm sieht jetz so aus. die ausgabe lässt sich aber so nicht compilieren:

Code:
import java.io.*;

public class bin {
	
public String  a = "";
public String  binaer = "";
public void binaer(int n) {
     if(n == 1) {
     	a+=(n);showBinaer();
     }
      else if(n == 0){showBinaer();}
           else {          
           a+=(n % 2);          
           binaer(n/2);     
      }
}
public void showBinaer(){
for(int i=a.length()-1;i>=0;i--) binaer+=a.charAt(i);
System.out.println(binaer);
} 
          
          
public static void main (String[] args) throws IOException{
int n;
	
BufferedReader din = new BufferedReader(                      
                     new InputStreamReader (System.in));
  
System.out.println("Bitte n eingeben: ");
n = Integer.parseInt(din.readLine());  
  
System.out.println(showBinaer);       
}
}
 
Zuletzt bearbeitet:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {new Main();}
    public Main(){
        try {
            int n;
            BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Bitte n eingeben: ");
            n = Integer.parseInt(din.readLine());
            binaer(n);
        } catch (IOException ex) {}
    }
    public String  a = "";
    public String  binaer = "";
    public void binaer(int n) {
    if(n == 1) {a+=(n);showBinaer();}
    else if(n == 0) {showBinaer();}
    else {
        a+=(n % 2);
        binaer(n/2);
        }
    }
    public void showBinaer()
    {
        for(int i=a.length()-1;i>=0;i--) binaer+=a.charAt(i);
        System.out.println(binaer);
        a="";
        binaer="";
    }    
}

Und wehe ich bekomme keine gute Bewertung
 
hm ich habe die selbe aufgabe, allerdings hilft mir dieser komplette text nicht so sehr, da ich einige teile im sourcecode nicht verstehe. könnte man das irgendwie einfacher schreiben?
ich hatte an das aneinanderreihen zweier strings gedacht, aber an der umsetzung hapert es leider. kann mir dazu wer einen tip geben
 
Naja, wenn du die selbe Aufgabe hast: die Lösung steht da ja bereits. Ich weiß auch leider nicht, was du mit aneinanderreihen von Strings meinst bzw. wie das zur Aufgabenlösung beitragen kann.

Der Quellcode sieht meiner Meinung nach auch schon anständig aus. "Einfacher" geht's immer, aber in den meisten Fällen dürfte dann was dabei rauskommen, was keine Rekursion mehr ist (wirklich einfach und verständlich wird's halt erst bei einer "normalen" Schleife).

Das einzige, was das ganze ein bisschen lesbarer macht, wäre vielleicht das += zu ersetzen. Also a += n zum Beispiel bedeutet nichts anderes als a = a + n.
 
Zurück