Array ohne vorher festgelegte Länge oder Wie wandle ich Zahlen in Zahlen mit anderen Basen um?

jens.ru

Mitglied
Einen schönen guten Abend. Zuerst zwei, drei Worte zu mir, da ich vorhabe, dieses Forum öfter zu besuchen und Hilfe in Anspruch zu nehmen 🙂
Mein Name ist Jens, 25 Jahre alt aus der Nähe von Bamberg. Ich studiere Medizintechnik im ersten Semester an der FAU in Erlangen.

Nun mein Problem. Wir sollen ein kleines Quiz programmieren, in dem in vielen verschiedenen Methoden viele verschiedene Aufgaben erledigt werden sollen. Ein Punkt ist die Konvertierung verschiedener Zahlen in andere Zahlensysteme. Ich gebe meiner Untermethode (in diesem Fall convertToBase) zwei Parameter mit, jeweils als int die Zahl, die konvertiert werden soll und die Basis, in die sie konvertiert werden soll. (z.B. 15,2) also die zahl 15 ins Binärsystem =>1111 und das ganze dann als String zurückgeben.

Nun bin ich irgendwie völlig überfragt, wie ich dies lösen soll.
Aktuell sieht mein (bis jetzt noch sehr dürftiger) Lösungsansatz so aus:
Java:
public static String convertToBase(int number, int base){
		int rest;
		String Rueckgabe="";
		for(int i=1;i<2;i=i){
			if(number>0){
				rest=number%base;
				number=number/base;
			}else{
				i=2;
			}
		}
		return Rueckgabe;
	}
Es soll irgendwie ein Array rein, dass den "rest" einliest. Dafür brauche ich eine funktionierende For-Schleife, die ich aber nur dann realisieren kann, wenn ich die Länge der Zahl hab, die zum Schluss rauskommt. Irgendwie drehe ich mich hier schon ewig im Kreis und mir fehlt trotzdem ausgiebiger Lektüre der richtige Ansatz. Vermutlich werden euch bei dem Code die Haare zu Berge stehen, aber das ist mir egal, ich weiß es momentan einfach noch nicht besser :toll: und sehe vermutlich gerade vor lauter Wald die Bäume nicht. :autsch: Ich werde natürlich synchron zu der Anfrage hier im Forum weiter programmieren und versuchen, meinen Code noch weiter zu verhunzen. Vielleicht kann mir ja jemand von euch einen Denkanstoß geben.
Danke schonmal im Voraus!

P.S. Ich weiß, dass hier momentan eine Do-While Schleife eher das Mittel der Wahl wäre, aber diese habe ich aus Gründen, die ich gerade selbst nicht mehr weiß, wieder verworfen...
 
Zuletzt bearbeitet:
für einen String brauchst du kein Array.
es gibt andere Schleifen als for - eine While Schleife wäre hier vielleicht sinnvoll.

Was du machen kannst:

Java:
String ergebnis = "";

und in jedem Durchlauf
Java:
ergebnis+=neueZahlDieDuberechnetHast

Beim herangehen an deine Aufgabe solltest du dir klar sein, welche Werte du kennst, und welche nicht.

Was weisst du, was weisst du nicht?

du weisst, dass du 2 Parameter bekommst.
du weisst nicht, wie lang das Ergebnis sein wird. Etwas statisches ist also erstmal kompliziert (Array)
du brauchst etwas, was dynamisch wachsen kann (ein String, wie er gefordert wird, wenn die Methodensignatur so passt), kann nicht wachsen, aber er lässt sich schnell in einen längeren String verwandeln.

Java:
public static String convertToBase(int number, int base){
        int rest;
        String erg="";
        while (number >0){
        rueckgabe+=rueckgabe%base;
        number = number / base;
}
rueckgabe = ergRückwärts :)
        return rueckgabe;
    }
 
und komplett...

Java:
public class Basendings {

	public static void main(String[] args) {
		System.out.println(convertToBase(15, 2));
		System.out.println(convertToBase(16, 2));

	}

	public static String convertToBase(int number, int base) {
		int rest;
		String rueckgabe = "";
		while (number > 0) {
			System.out.println(number + ":" + number % base);
			rueckgabe = rueckgabe + number % base;
			System.out.println(rueckgabe);
			number = number / base;
		}
		
		return reverseIt(rueckgabe);
	}
	public static String reverseIt(String source) {
	    int i, len = source.length();
	    StringBuffer dest = new StringBuffer(len);

	    for (i = (len - 1); i >= 0; i--)
	      dest.append(source.charAt(i));
	    return dest.toString();
	  }
 
Nunja, dann bleibt mir gerade eigentlich nicht viel mehr, als dir DANKE!!! zu sagen!

Auf die Idee mit dem String bin ich garnicht gekommen. Ich hatte vor, das als Int[] einzulesen und dann ganz am Ende in einen String umzuwandeln. Dass das bei gegebener Aufgabenstellung ja auch sehr viel einfach ist...naja, wie ich sagte...vor lauter Wald die Bäume nicht. 🙂

Und wenn ich jetzt noch irgendwo den Danke-Knopf finde, dann bekommst du auch eins...
 
Zuletzt bearbeitet:
Eben nicht. Da gibts nur
ändern, zitieren, Beitrag zum Zitieren auswählen, Direkt antworten, Bei Google nach dem markierten Wort suchen, Bei Wikipedia nach dem markierten Wort suchen, Im Forum nach dem markierten Wort suchen:autsch:

Kann ich das u.U. vielleicht erst ab einer gewissen Beitragszahl? Wäre aber recht sinnfrei?
 

Zurück
Oben