Tree erstellen

Ich wollte für mc einen tree erstellen, sodass die benötigten commands trotz des hardcodens nicht so viele sind.
Doch das hier erschafft nicht alle Ordner:
Java:
import java.io.*;
import java.nio.file.*;
public class Effect {
    public static void main(String[] args) {
        int[] primes = primes();
        String path = "haste/";
        String[] currentPrimes = new String[primes.length];
        for(int i = 0; i < primes.length-1; i++) {
            currentPrimes[i] = Integer.toString(1) + "/";
            path+=currentPrimes[i];
        }
        String file = "1";
        Path p;
        File f;
        for(int i = 0; i < primes.length; i++) {
            System.out.println("hoi");
            for(int j = 0; j < primes.length; j++) {
                currentPrimes[j] = Integer.toString(1) + "/";
            }
            for(int j = 1; j <= primes[i]; j++) {
                currentPrimes[i] = Integer.toString(j) + "/";
                
                path = "haste/";
                for(int k = 0; k < primes.length-1; k++) {
                    path+=currentPrimes[k];
                }
                System.out.println(path);
                file = "" + j;
                p = Paths.get(path, file);
                f = new File(path + file+".mcfunction");
                try {
                    Files.createDirectories(p.getParent());
                    f.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        /**for(int x = 1; x<=320; x++) {
            System.out.println("execute if score @s haste matches " + x + " run effect give @p haste 1 " + (x-1));
            if((x%5)==0) {
                System.out.println("");
            }
        }**/
    }
    static int[] primes() {
        int[] primes = new int[320];
        int x = 0;
        int number = 320;
        for(int i = 2; i < number; i++) {
            while(number%i==0) {
                primes[x] = i;
                number /= i;
                System.out.println(i);
                x++;
            }
        }
        if(number >= 2) {
            primes[x] = number;
            x++;
        }
        int[] ints = new int[x];
        for(int i = 0; i < x; i++) {
            ints[i] = primes[i];
        }
        return ints;
    }
}
 

Neumi5694

Top Contributor
Lass dir an der Stelle, wo die Verzeichnisse erstellt werden, mal ausgeben, dass eines erstellt werden sollte. So sieht du dann auch, was passiert.
Dann vergleiche das mit dem, was du erwartet hast. "nicht alle werden erstellt" ... was heißt das? welche fehlen? Bist du sicher, dass die entsprechenden Zahlen sich überhaupt in der Liste befinden?

Je nachdem, mit welchem System du arbeitest, könntest du auch an die Grenze der Dateinamenlänge stoßen.
Die Länge eines Dateipfades (Ort + Name) darf in Windows z.B. 256 Zeichen nicht übersteigen, sonst kann man sie nicht mehr über ihren Namen ansprechen. (Mit etwas Trickserei geht's schon, halt nicht über den Namen).

Schreib mal bitte den Tree so auf, wie du ihn erwarten würdest.

Aber mal eine Frage nebenbei. Warum verwendest du überall Arrays? Verwendet doch Listen, gerade wenn die Ergebnismenge nicht bekannt ist.
Ich bin mir jetzt nicht zu 100% sicher, was deine primes() Methode macht. Dem Namen nach würde ich auf Primzahlensuche tippen, aber die kenn ich dann doch etwas anders.
Das Übertragen eines arrays in eine anderes klappt besser mit System.arrayCopy()
Aber du bräuchtest gar kein zweites, wenn du gleich eine Liste verwenden würdest. Mit liste.add() fügst du ein neues ELement hinzu, mit set() setzt du eines. (ps: 'x' für einen Index? Pfui!)
 
haste/1/1/1/1/1/1/
haste/2/1/1/1/1/1/
hoi
haste/1/1/1/1/1/1/
haste/1/2/1/1/1/1/
hoi
haste/1/1/1/1/1/1/
haste/1/1/2/1/1/1/
hoi
haste/1/1/1/1/1/1/
haste/1/1/1/2/1/1/
hoi
haste/1/1/1/1/1/1/
haste/1/1/1/1/2/1/
hoi
haste/1/1/1/1/1/1/
haste/1/1/1/1/1/2/
hoi
haste/1/1/1/1/1/1/
haste/1/1/1/1/1/1/
haste/1/1/1/1/1/1/
haste/1/1/1/1/1/1/
haste/1/1/1/1/1/1/

Das sagt er mir bei Zeile 27... das heißt, dass ich nicht viele von denen erstelle, da ich etwas falsch gemacht habe...
 

KonradN

Super-Moderator
Mitarbeiter
Ich muss erst einmal gestehen: Ich habe mir erst einmal nicht im Detail angesehen, was Du da genau machst, aber die Komplexität ist schon relativ hoch. Daher wäre es evtl. eine Überlegung wert, ob Du das nicht weiter unterteilen kannst in Elemente / Methoden, die weniger komplex sind und die dann auch besser testbar sind? Um dann eben diese einzelnen Komponenten auch zu testen. Das könnte ein Ansatz sein, so eine Problematik zu lösen.

Es ist halt immer sehr blöd, wenn man zu große Brocken hat und man da dann Fehler suchen muss. Das ist extrem zeitaufwändig und kostet zudem viel Nerven. Daher an der Stelle auch der dezente Hinweis auf Unit Tests / Mocking, was bei sowas die Werkzeuge sind, hier zügiger voran zu kommen.

Abe mehr habe ich auch nicht bei zu tragen. Aber evtl. ist dieser einfache, allgemeine Hinweis ja auch hilfreich.
 
im Moment gehe ich einfach alles durch und erschaffe immer 1 und 2 aber da ich das immer wieder resette, erschafft der das immer nur bei 1/x... wie kriege ich das jetzt hin, dass der alle Möglichkeiten durchgeht, die ja 230 sind...
 
wie kann ich
Java:
for(int i = 0; i < primes[0]; i++) {
    for(int j = 0; j < primes[1]; j++) {
        for(int k = 0; k < primes[2]; k++) {
            for(int l = 0; l < primes[3]; l++) {
                for(int m = 0; m < primes[4]; m++) {
                    und noch weitere (so viele, wie nötig)
                }
            }
        }
    }
}
machen?
 

Neumi5694

Top Contributor
wie kann ich
Java:
for(int i = 0; i < primes[0]; i++) {
    for(int j = 0; j < primes[1]; j++) {
        for(int k = 0; k < primes[2]; k++) {
            for(int l = 0; l < primes[3]; l++) {
                for(int m = 0; m < primes[4]; m++) {
                    und noch weitere (so viele, wie nötig)
                }
            }
        }
    }
}
machen?
Falscher Ansatz, das meinte KonradN. Du packst viel zu viel an eine Stelle.
Schreibe erst mal eine Methode, die genau eine Ebene erstellt, als Parameter gibst du ihr das Parent-Verzeichnis mit.
Du kannst sie dann mit dem jeweiligen primes Parameter aufrufen.
 

KonradN

Super-Moderator
Mitarbeiter
wie kann ich
Java:
for(int i = 0; i < primes[0]; i++) {
    for(int j = 0; j < primes[1]; j++) {
        for(int k = 0; k < primes[2]; k++) {
            for(int l = 0; l < primes[3]; l++) {
                for(int m = 0; m < primes[4]; m++) {
                    und noch weitere (so viele, wie nötig)
                }
            }
        }
    }
}
machen?
Wieso formulierst Du das nicht einfach erst einmal um. Du hast primes ja bereits in einem Array. Also kannst Du da doch direkt alles in eine Schleife packen.
Aber Schleife ist hier evtl. schwer direkt zu formulieren - das sieht direkt nach einer Rekursion aus: Neben primes gibst Du noch mit, wo Du bist.
(Evtl. ist primes ja auch eine Instanzvariable - dann brauchst Du es nicht mit zu geben.
Abbruch-Bedingung ist dann: currentIndex >= primes.length
Und du hast die Schleife dann halt for (int index=0; index < primes[currentIndex]; index++) und in der Schleife den rekursiven Aufruf mit currentIndex+1

Aber das ist ja nur ein Implementierungsdetail. Das ganze Problem würde ich etwas stärker aufteilen. Was wird wo gemacht?
Das sollte also immer kleine, einfach zu überblickende Dinge sein mit Namen, die klar etwas aussagen.

So habe ich mir Deinen Code angesehen und hatte erst einmal nur ????? im Kopf. Und dann war es das. Keine Ahnung, was Du da überhaupt machst.

Was soll primes machen? Soll das Primzahlen ermitteln? Hast Du das mal geprüft? Das sieht mehr wie dubios aus und dürfte vieles machen aber keine Primzahlen ermitteln. (Der Ansatz sieht etwas so aus, als wolltest Du Primzahlen bis hin zu 320 bestimmen. Da wäre das Sieb von Eratosthenes sinnvoll und evt. wolltest Du das? Aber das geht anders ...

So Methoden sind natürlich gut zu testen. Daher wird es vermutlich auch nichts mit Primzahlen zu tun haben sondern wird nur eine Primzahlenzerlegung sein? Dann sollte es aber auch prime factorization heißen oder so. (und die 320 als Parameter nehmen. Ansonsten wäre es einfach ein int[] primes = { 2, 2, 2, ....... };

Das aber nur als Erläuterung, wieso ich mir das nicht näher angesehen habe - denn ich weiss nicht, was Du machen willst und daher kann ich da auch keine Fehler finden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna DeleteNode-Funktionalität in einem AVL-Tree Allgemeine Java-Themen 5
Kirby.exe Search Tree Allgemeine Java-Themen 11
M kruskals-algorithm-minimum-spanning-tree Allgemeine Java-Themen 5
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
F Framework/Plugin für Tree-Darstellung in Graph Allgemeine Java-Themen 0
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
B k-d Tree in Java bauen Allgemeine Java-Themen 2
P Tree Object structure Allgemeine Java-Themen 19
P Collection Tree Allgemeine Java-Themen 19
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
J Tree indexieren, Element-Indexierung Allgemeine Java-Themen 2
Zrebna Testkonzept erstellen - Verständnisschwierigkeiten Allgemeine Java-Themen 6
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
J Power Point erstellen inklusive Diagramm Allgemeine Java-Themen 12
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Trace-Tabelle erstellen Allgemeine Java-Themen 3
M Excel Datei Erstellen Allgemeine Java-Themen 2
OnDemand Erstellen von Quartz Jobs pro Aufgabe oder zusammenfassen Allgemeine Java-Themen 7
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
R Geometry erstellen die abhängig von Variablen ist Allgemeine Java-Themen 6
Gaudimagspam Skip Liste erstellen in Java Allgemeine Java-Themen 3
Avalon DTO aus mehrere Entitäten erstellen Allgemeine Java-Themen 5
Kirby.exe Distanz Map für die Distanztransformation erstellen Allgemeine Java-Themen 1
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Rectangle mit Java erstellen? Allgemeine Java-Themen 9
G Fläche erstellen mit Entfernungen Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
B Rangliste erstellen Allgemeine Java-Themen 13
D 2,3-Baum rekursiv erstellen Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
E Ts3API Subchannel erstellen und rein moven !! Allgemeine Java-Themen 0
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
S Compiler-Fehler IntelliJ Projektdatei lässt sich nicht erstellen. Allgemeine Java-Themen 15
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
S TestNG Eclipse: Reporting erstellen/ verändern Allgemeine Java-Themen 0
F .jar erstellen und starten Allgemeine Java-Themen 15
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
N 1000 MQTT Messages die Sekunde - 1000 Threads erstellen ? Allgemeine Java-Themen 10
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
T 32-Bit Applikationen mit Eclipse erstellen Allgemeine Java-Themen 4
R Input/Output RTF erstellen? Allgemeine Java-Themen 2
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
M Dokument erstellen Allgemeine Java-Themen 0
S Java API für GitHub erstellen Allgemeine Java-Themen 14
T Ant Jar Datei per Ant in Eclipse erstellen Allgemeine Java-Themen 2
4a61766120617274697374 Hintergrundjobs(tasks) in Java erstellen Allgemeine Java-Themen 3
K Eigene API erstellen? Allgemeine Java-Themen 13
N Benutzeroberfläche erstellen Allgemeine Java-Themen 5
Thallius Eigenes Message Center erstellen Allgemeine Java-Themen 3
perlenfischer1984 Mehrere Komponenten erstellen Allgemeine Java-Themen 3
B jni - Headerdatei erstellen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
B automatisch benannte arrays erstellen Allgemeine Java-Themen 9
F URI-Scheme mit Java unter MacOS erstellen? Allgemeine Java-Themen 0
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
M Textfile erstellen Allgemeine Java-Themen 11
L Wie kann ich einen Keystore aus existierenden Zertifikaten erstellen? Allgemeine Java-Themen 1
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
D Ordner auf Desktop erstellen(Pc unabhängig) Allgemeine Java-Themen 5
T Dll erstellen und einbinden Allgemeine Java-Themen 1
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Eigenstehende *.exe Datei erstellen Allgemeine Java-Themen 15
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
B MySQL Eintrag erstellen Allgemeine Java-Themen 3
Thallius PDF von einem BufferedImage erstellen Allgemeine Java-Themen 1
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
3 Backup von h2-Datenbank-Datei erstellen Allgemeine Java-Themen 6
S ImageMap erstellen Allgemeine Java-Themen 1
A Spielemap erstellen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben