MasterProgram Posted August 30, 2015 Share Posted August 30, 2015 (edited) Hallo ich programmiere noch nicht so lange und kenn nur die Basics um ein Minecraft Plugin zu schreiben Ich habe mein Team/Group im grunde fertig aber die textausgabe sieht ein wenig langweilig und unprofessionell aus. Ich habe es so geschrieben. List Owner = plugin.getConfig().getStringList("owner"); p.sendMessage(utils.owner + "?6" + Owner.toString()); und ausgegeben wird [Owner] [name1, name2, ...] Das sieht mir zu langweilig aus und egal was ich versuche es bleiben immer diese blöden Klammern [] Ich stelle mir etwas in der Richtung vor , wo ich auch zb die Farbe ändern kann wenn der Spieler Online ist oder nicht (ging mit toString leider nicht): [Owner] Name1 | Name2 | ... Bitte um eine gute Antwort, wie ich dieses "Schönheitsproblem" beheben kann. Danke im Vorraus! Edited August 30, 2015 by MasterProgram Link to comment Share on other sites More sharing options...
idk.cpp Posted August 30, 2015 Share Posted August 30, 2015 Hallo, bevor ich zu deinem eigentlichen Problem komme; CODE STYLE! (eine kleine Übersicht => http://www.javaranch.com/style.jsp ) Die Methode toString() ist in jedem Objekt vorhanten weil sie durch java.lang.Object definiert ist und von Klassen überschrieben wird. Die Dokumentation ( https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) sagt: String toString() Returns a string representation of the object. Arrays werden sehr oft durch [ ] definiert. Das war ein bisschen Vorgeschichte. LÖSUNG Du kannst jedes Element aus der Liste abfragen und dann daraus einen String bauen der deine Separatoren hat. ZB so: List<String> owners = getConfig().getStringList("owner");StringBuffer ownerListStringBuffer = new StringBuffer();for (String owner : owners) { ownerListStringBuffer.append(" | "); ownerListStringBuffer.append(owner);}if (ownerListStringBuffer.toString().isEmpty()) { p.sendMessage(utils.owner + "?6Currently none!");} else { p.sendMessage(utlis.owner + "?6" + ownerListStringBuffer.toString().substring(3);} Erklärung: List ist eine Klasse instanceof Iterable, d.h. sie kann mit einer foreach Schleife durchlaufen werden. Der Doppelpunkt in der Schleife sorgt dafür, dass die Variable owner jedes Element in der Liste owners einmal ist. Damit wird der StringBuffer immer mit deinem Separator und dem Namen des Owners gefüllt. Die Abfrage auf toString().isEmpty() ist notwendig weil du den ersten Separator ja nich mit in der Meldung haben willst (deshalb auch .substring(3)) und der Aufruf .substring(3) bei einem leeren String eine StringArrayIndexOutOfBoundsException werfen würde. Lg idk.java Link to comment Share on other sites More sharing options...
MasterProgram Posted August 30, 2015 Author Share Posted August 30, 2015 Vielen vielen dank für den Code und besonders für die Erklärung! Ich hab es jetzt verstanden und werde mir die Links die du mir geschickt hast zu nutze machen. Großes Lob! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now