Wie in Java eine StringList ohne ' ' machen?

...komplette Frage anzeigen

1 Antwort

Was soll eine StringList sein? Diese Klasse gibt es in der Java SE nicht.

Und wie speicherst du das?

Trachom 12.08.2016, 15:30

File file = new File("plugins/CommandCreator", "commands.yml");
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);

List  Commands= cfg.getStringList("Commands." + "List");

und hinzufügen mit z.b. Commands.add(string);

speichern mit cfg.saveFile(file);

0
androhecker 12.08.2016, 15:44

Du machst hier so ziemlich alles falsch, was man falsch machen kann... 1. Deine Frage ist sehr ungenau, du redest hier von dem Bukkit YAML Konfigsystem, erwähnst es aber nirgendwo, wie soll man das erraten? 2. Du kannst offensichtlich kein Java, das solltest du lernen bevor du Java Frameworks für Fortgeschrittene nutzt. 3. Bukkit liefert dir eine gute Methode deinen Plugin Config Ordner zu bekommen. 4. Listen nutzen Generics, das solltest du auch. List

wäre hier mehr als angemessen. 5. Variablennamen immer vorne klein. 6. In YAML schreibt man die Keys komplett klein, genauso wie Java Pakete. Die eigentliche Antwort: In YAML werden um Strings Anführungszeichen gemacht, wenn der YAML Parser von Bukkit diese nicht wieder entfernt, stimmt irgendwas mit diesem nicht. Man kann die Anführungszeichen auch entfernen, wie das geht, solltest du wissen. (Einfache Stringverarbeitung mit replace)

1
androhecker 12.08.2016, 15:46

GF ist wirklich schlecht, hinter dem List sollte der Diamantoperator mit String darin stehen, GF hat daraus zwei Zeilenumbrüche gemacht.

1
Trachom 12.08.2016, 17:11
@androhecker

Okay, tut mir Leid, ich wusste nicht, dass das Yaml Konfigsystem von Bukkit ist, dachte das ist von Java, danke für die Info. 

Aber da du ja anscheinend auch ein Bisschen Ahnung von Bukkit hast, kann ich es ja genauer erklären. Ich möchte in einem File eine Liste mit Befehlen haben, die man per Command, Z.b. /command add [command] erweitern und per /command remove [command] verkleinern kann. 


Um [command] in einem String zu kriegen habe ich das so gemacht:

String comd = "";

for (int i = 1; i < args.length; i++) {
comd = comd + args[i] + " ";
}

und dann halt

List<String> list= cfg.getStringList("Commands." + "List");

list.add(comd);

try {
cfg.save(file);
comd = "";
} catch (IOException e) {
e.printStackTrace();
}


Aber leider steht dann in der Datei der Command mit ' :/

0
androhecker 12.08.2016, 17:24

Und? Dann steht da '(Command)', das ist YAML Syntax. Wenn du das Command wieder lädst, ist es auch wieder weg.

0
Trachom 12.08.2016, 18:15
@androhecker

Was meinst du mit 'Wenn du das Command wieder lädst, ...' ?

0
androhecker 12.08.2016, 18:22

YAML verwendet immer ein Anführungszeichen, wie bei Java auch. Wenn du die Liste lädst, ist das Anführungszeichen natürlich nicht mehr dabei. In Java schreibt man auch ...print("Foo"), trotzdem ist das Ergebnis Foo und nicht "Foo".

0
Trachom 12.08.2016, 20:40
@androhecker

Das geht leider nicht so ganz. Wenn ich mir eine Message mit der Stringlist ausgeben lasse, bekomme ich [command, command, command]

Habe die geschweiften Klammern zwar schon entfernt wenn ich mir die Message ausgebe, aber entfernen kann ich trotzdem nichts von der Liste.

0
androhecker 13.08.2016, 01:27

So wird eine Liste ganz normal ausgegeben, wenn du einen einzelnen String haben willst musst du diesen auch einzeln aufrufen. Wenn du ernsthaft Hilfe willst, solltest du das Problem mal richtig beschreiben.

0
Trachom 14.08.2016, 11:07
@androhecker

Wenn ich einen String zur Liste hinzufüge, dann steht da ja 'command' , obwohl ich nur command eingegeben habe. Wenn ich aber command von der Liste löschen will, dann passiert gar nichts.

0
androhecker 14.08.2016, 11:55

Wenn du es nicht schaffst, richtig zu erklären, dann solltest du den ganzen Code schicken. So wird das nichts.

0
Trachom 14.08.2016, 13:35
@androhecker

Ich kapiere nicht, was du daran nicht verstehst. Den Code habe ich übrigens schon geschickt.

0
androhecker 14.08.2016, 13:44

Du verstehst es selber nicht richtig, vermutlich weil du nie Java richtig gelernt hast. Wie soll ich eine Erklärung von jemandem, der es selber nicht versteht verstehen? Ich meine den ganzen Code, nicht nur einen kleinen Ausschnitt. An den Hinzufügemethoden/Speichermethoden wird wohl kaum ein Fehler sein.

0
androhecker 14.08.2016, 13:50

Also gut, dann nicht. Du siehst auch daran, dass es keine anderen Antworten gibt, dass die Frage einfach nur schlecht gestellt ist.

0
Trachom 14.08.2016, 13:51
@androhecker

Da hast du recht, jedoch wurde in den Kommentaren alles ausführlich erklärt.

0
androhecker 14.08.2016, 13:54
@Trachom

Von jemanden, der überhaupt keine Ahnung von Java hat, aber ein Java API verwendet, die absolut nicht für Anfänger geeignet ist. Sorry aber solange du nicht wenigsten einen großen Teil von allem was hier (http://openbook.rheinwerk-verlag.de/javainsel/) steht weißt, kannst du Spigot/Bukkit vergessen.

0

Was möchtest Du wissen?