Rückgabe eines Arrays

mp1234

Neues Mitglied
Hallo,

ich bin dabei, ein Programm zu schreiben, in dem don Dezimalzahl zu Hexa, Dual und Oktal gewandelt werden soll. Könnt ihr mir da helfen, ein return zu machen, sodass ich das System.out.Print in einer anderen Methode schreiben kann, weil von jeder methode der errechnete wert returned werden soll und dann in einer neuen dann ausgegeben werden soll.
Vielleicht könnt ihr mir da helfen.
Auch wenn es kein schöner quellcode ist, soll der grundaufbau mit den schleifen etc so bleiben

Vielen Dank im Voraus


public static int dezimalzuoktal (int i) //Berechnung der Oktalzahl
{
int zahl = i;//Dezimalzahl in neuer Variablen speichern
System.out.println("Dezimalzahl zu Oktalzahl");
do
{
int[] array = new int[3];//Erstellen eines Arrays der Größe 3, da bei 8 Bit höchstens eine dreizeilige Oktalzahl entsteht.
for (int zaehler = 0; zaehler<array.length; zaehler++)//Elemente in das Array abspeichern
{
int rest = i%8; //Rechnen mit Modulo, um den Rest zu bestimmen, die die Dualzahlen bilden
i=i/8; //Zahl durch 8 teilen, um weiter zu rechnen, bis der Rest 0 ist
array[zaehler] = (int) rest; //Rest in das Array abspeichern
}
//Array muss rückwärts ausgegeben werden und wird im nächsten Schritt rückwärts ausgelesen, sadass die richtige Reihenfolge der Oktalzahl entsteht
System.out.print("Die Zahl " + zahl + " lautet als Oktalzahl: ");
for (int zaehler2 = array.length - 1; zaehler2>=0; zaehler2 --)
{
//System.out.print(array[zaehler2]);
}
}

while (i>0); //solange rechnen bis i, die zu teilende Zahl, 0 ist


System.out.println(); //Absätze zur Optik einfügen
System.out.println();

return *?*;

}
 
Moin,

nutze bitte die Code-Tags!
So bekommt man ja Augenkrebs!!

Wenn Deine Methode ein Array zurückgeben sol, musst es ihr in der Signatur auch sagen.
Derzeit ist es nur ein einzelner integer-Wert!

VG Klaus
 
Java:
	public static Optional<String[]> hexaDualOktalString(int x) {
		if (x < 0) {
			return Optional.empty();
		}
		return Optional.of(new String[] {lenString(Integer.toHexString(x), 8), lenString(Integer.toBinaryString(x), 32), lenString(Integer.toOctalString(x), 11)});
	}

	public static String lenString(String s, int l) {
		return String.format("%" + l + "s", s).replace(' ', '0');
	}

	public static void main(String[] args) {
		System.out.println(Arrays.toString(hexaDualOktalString(1).get()));
		System.out.println(Arrays.toString(hexaDualOktalString(Integer.MAX_VALUE).get()));
	}
 
Der Code aus #1 mal in Code-Tags - wird dadurch aber auch nicht besser...

Java:
public static int dezimalzuoktal (int i) //Berechnung der Oktalzahl
{
    int zahl = i;//Dezimalzahl in neuer Variablen speichern
    System.out.println("Dezimalzahl zu Oktalzahl");
    do
    {
        int[] array = new int[3];//Erstellen eines Arrays der Größe 3, da bei 8 Bit höchstens eine dreizeilige Oktalzahl entsteht.
        for (int zaehler = 0; zaehler<array.length; zaehler++)//Elemente in das Array abspeichern
        {
            int rest = i%8; //Rechnen mit Modulo, um den Rest zu bestimmen, die die Dualzahlen bilden
            i=i/8; //Zahl durch 8 teilen, um weiter zu rechnen, bis der Rest 0 ist
            array[zaehler] = (int) rest; //Rest in das Array abspeichern
        }
        //Array muss rückwärts ausgegeben werden und wird im nächsten Schritt rückwärts ausgelesen, sadass die richtige Reihenfolge der Oktalzahl entsteht
        System.out.print("Die Zahl " + zahl + " lautet als Oktalzahl: ");
        for (int zaehler2 = array.length - 1; zaehler2>=0; zaehler2 --)
        {
            //System.out.print(array[zaehler2]);

        }
    }
    while (i>0); //solange rechnen bis i, die zu teilende Zahl, 0 ist


    System.out.println(); //Absätze zur Optik einfügen
    System.out.println();

    return *?*;
}

Das Ganze nochmal ohne störende Kommentare, überflüssige Schleifen und Ausgaben; wie üblich formatiert:

Java:
public static int dezimalzuoktal (int i) {
    int zahl = i;
    do {
        int[] array = new int[3];
        for (int zaehler = 0; zaehler<array.length; zaehler++) {
            int rest = i%8;
            i=i/8;
            array[zaehler] = (int) rest;
        }
    } while (i>0);

    return *?*;
}

Das Ganze ist zu kompliziert und funktioniert so natürlich nicht. Die for-Schleife überschreibt das Array immer wieder. Wenn Du unbedingt Arrays haben willst, mach den Spaß einfach so:

1. Berechne die benötigte Array-Länge n.
2. Erzeuge ein Array der Länge n.
3. Fülle das Array gleich in der richtigen Reihenfolge mit den umgerechneten Werten (ähnlich Deiner for-Schleife).
4. Gib das Array zurück.
 

Neue Themen


Zurück
Oben