• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Arrayverarbeitung

Status
Für weitere Antworten geschlossen.
C

C64

Guest
Moin,

gesucht ist eine Lösung für folgende Aufgabe:

Geladene Arrays

ente{...}

bits{
[...]
1010101010110,
0101110101010,
0101110111101,
[...]
}

Zerlegung auf das einzelne Bit erfolgte, dann:

schleife beginn 1 ende 13
IST WERT==1 dann var = "ente[int]" sonst var=""
schleifenende

diese schleife wird für eine bitreihe durchlaufen, anschließend soll ein string generiert werden, der so aussehen soll:

var2 = "var1, var2, var3, ..., var13"

mir fiel bisher keine komfortable (und vor allem anpassbare) variante ein.

Grüße, Patrick
 
C

C64

Guest
In einem Satz ist das m.M.n. nicht möglich, aber ich versuchs mal in Stichpunkten:

Ein Array besteht aus mehreren Bitsätzen (zum Bleistift 8bits)
--> 10011001
Jeder Satz wird auf das einzelne Bit dann aufgedröselt
--> 1
--> 0
--> 0
--> 1
--> 1
--> 0
--> 0
--> 1
Jedes Bit wird in einer Schleife abgearbeitet
--> if arrayteilvariable == 1 dann "on" else "off"

soweit ist alles kein problem, der haken ist bei zusammenführung der returnvariabel
--> returnvariable = (var1+var2+var3+var4....)
 

Zahl

Vorarbeiter
Registriert
10 Juli 2011
Beiträge
213
Diamanten
0
Die Erklärung ist noch immer wirr, ich hab bis jetzt jedes mal was anderes verstanden. Mal scheint es ne Arraytransformation zu sein, mal eine Funktion die nen String als Rückgabewert hat...? Könntest du evtl mal ein Beispiel mit mehr oder weniger echten Daten geben (2 oder 3 Sätze) und Schritt für Schritt zeigen was rauskommen soll? Mit Bits und Enten kann ich nämlich grad nicht viel anfangen.
 

Calenria

Braumeister
Registriert
28 Juli 2012
Beiträge
386
Alter
45
Diamanten
300
Minecraft
Calenria
Nur um zu sehen ob ich das Problem richtig verstanden habe:

Code:
    public static void main(String[] args) {
        for (String[] bits : bit2string()) {
            System.out.println(join(Arrays.asList(bits), ","));
        }
    }


    public static ArrayList<String[]> bit2string() {


        String[] ente = { "aus", "an" };
        String[] bitArray = { "1010101010110", "0101110101010", "0101110111101" };
        ArrayList<String[]> vars = new ArrayList<String[]>();


        for (String bits : bitArray) {
            String[] output = new String[13];
            for (int i = 0; i < bits.length(); i++) {
                int bit = Integer.valueOf(bits.substring(i, i + 1));


                output[i] = ente[bit];
            }
            vars.add(output);
        }


        return vars;
    }


    static String join(Collection<?> s, String delimiter) {
        StringBuilder builder = new StringBuilder();
        Iterator<?> iter = s.iterator();
        while (iter.hasNext()) {
            builder.append(iter.next());
            if (!iter.hasNext()) {
                break;
            }
            builder.append(delimiter);
        }
        return builder.toString();
    }

Die Ausgabe wäre dann:
Code:
an,aus,an,aus,an,aus,an,aus,an,aus,an,an,aus
aus,an,aus,an,an,an,aus,an,aus,an,aus,an,aus
aus,an,aus,an,an,an,aus,an,an,an,an,aus,an

aber ehrlich gesagt habe ich sein Problem noch nicht verstanden, denke ich ;)
 
Zuletzt bearbeitet:
C

C64

Guest
Lösung

Nur um zu sehen ob ich das Problem richtig verstanden habe:

Code:
    public static void main(String[] args) {
        for (String[] bits : bit2string()) {
            System.out.println(join(Arrays.asList(bits), ","));
        }
    }


    public static ArrayList<String[]> bit2string() {


        String[] ente = { "aus", "an" };
        String[] bitArray = { "1010101010110", "0101110101010", "0101110111101" };
        ArrayList<String[]> vars = new ArrayList<String[]>();


        for (String bits : bitArray) {
            String[] output = new String[13];
            for (int i = 0; i < bits.length(); i++) {
                int bit = Integer.valueOf(bits.substring(i, i + 1));


                output[i] = ente[bit];
            }
            vars.add(output);
        }


        return vars;
    }


    static String join(Collection<?> s, String delimiter) {
        StringBuilder builder = new StringBuilder();
        Iterator<?> iter = s.iterator();
        while (iter.hasNext()) {
            builder.append(iter.next());
            if (!iter.hasNext()) {
                break;
            }
            builder.append(delimiter);
        }
        return builder.toString();
    }

Die Ausgabe wäre dann:
Code:
an,aus,an,aus,an,aus,an,aus,an,aus,an,an,aus
aus,an,aus,an,an,an,aus,an,aus,an,aus,an,aus
aus,an,aus,an,an,an,aus,an,an,an,an,aus,an

aber ehrlich gesagt habe ich sein Problem noch nicht verstanden, denke ich ;)

Das war in etwa das was ich suchte.
Erst durch das Konstrukt habe ich herausgefunden wie ich das "vereinfache" bzw. sich verbessern lässt.
Klingt wirr, aber es hat mir schonmal sehr viel weitergeholfen:star:
 
Status
Für weitere Antworten geschlossen.
Oben