In Java public static void main neustarten auf knopfdruck/ nochmals durchlaufen?

1 Antwort

Wir müssen hier erstmal Ordnung schaffen:

ob ich einfach den Java public static void main erneut durchlaufen

Nein das geht nicht. Diese Main-Methode ist nämlich mehr oder minder dein gesamtes Programm.(sehr abstrakt gesehen)

Was du machen könntest: Eine Methode schreiben, welche auf eine Nutzereingabe reagiert und dann deinen Algorithmus ausführt. Du lagerst also deinen jetzigen Code in eine separate Funktion aus. Diese kannst du so oft aufrufen wie du möchtest ;)


Hier noch eine kleine Sachen:

if (selectedFileName == "")


Hier versuchst du wohl zu testen ob der String "selectedFileName" leer ist. Strings werden in Java nicht mit "==" verglichen! Hierfür ist die "Equals"  Methode zu gebrauchen.


Hier gibt es ein gutes Beispiel warum das so ist: http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java


Woher ich das weiß:Berufserfahrung – Java Entwickler
Jibenni 
Fragesteller
 19.10.2016, 15:17

gut und hast du auch ein beispiel wie ich das in eine methode packe :D

0
Eismensch  19.10.2016, 15:23
@Jibenni
public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException, ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {


//Irgendeine Art der Nutezreingabe

tuCooleSachen(Nutzereingabe);

private void tuCooleSachen(String selectedFileName) {

if (selectedFileName.equals("") { //selectedFileName ist meine neue Datei
File file = new File("C:\\Users\\benjamin.leipnitz\\Documents\\rahmen.xml");
documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(file);

} else {
File selectedFileUpdate = new File(selectedFileName);
documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(selectedFileUpdate);
}
}

}

Für etwas genaueres fehlt mir der Kontext. Aber so in etwa könnte es aussehen. 

0
PWolff  19.10.2016, 15:24
@Jibenni

Habt ihr schon Methoden und ihre Aufrufe im Unterricht gehabt?

0
Eismensch  19.10.2016, 15:25
@PWolff

Wenn sie bereits Factories nutzen, müsste das schon lang geschehen sein.

0
Jibenni 
Fragesteller
 19.10.2016, 15:50
@Eismensch

also ich hab jetzt von 

der main eine neue public static void update erstellt

die main springt dann zu der update, wie kann ich das machen das er den update nochmal durchläuft wenn ich einen button drücke?

0
Eismensch  19.10.2016, 16:02
@Jibenni

Hmm tut mir leid, hier habe ich deinen Wissenstand etwas falsch eingeschätzt.

Machen wir es Schrittweise.

Du hast eine GUI. In dieser hast du dann einen Button zum aktualisieren. Je nachdem wie deine GUI aufgebaut ist, geht das ganze etwas anders, aber im Grundprinzip brauchst du einen Actionlistener für de Button.

->http://www.java-tutorial.org/actionlistener.html

Über diesen Listener kannst du dann deine neue Methode aufrufen.

Diese muss nebenbei nicht unbedingt "static" sein.

->http://www.gailer-net.de/tutorials/java/Notes/chap25/ch25_13.html
->http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_05_003.htm#mjd51d5220468ee4a1f2a07b6796bb393b

Mehr kann ich dir leider nicht sagen, ohne den Code zu sehen.

1
Jibenni 
Fragesteller
 19.10.2016, 16:39
@Eismensch

Ja habs danke :D

sorry kann den code nicht preisgeben, er ist zu lang und ist ein betriebsgeheimnis sozusagen xD

0
Eismensch  19.10.2016, 16:59
@Jibenni

Den Code sollte man auch nicht hier veröffentlichen ;)

Dafür gibt es sowas wie z.B. https://github.com/

Und "Betriebsgeheimnis" würde ich es nicht nennen. Closed-Source ist vor allem, wenn man gerade lernt, der falsche Weg. Nichts was du da machst ist neu (Fast jedes Problem wurde bereits von jemand anderen mal gelöst^^) und ohne den Code zu kennen ist es schwer dir zu helfen. Am Anfang macht man nämlich viele Fehler die man einfach nicht erkennt, weil einem die Erfahrung fehlt.

0
Johannes3112  06.11.2016, 16:22

Statt

selectedFileName.equals("")

kann man auch

selectedFileName.isEmtpy()

nehmen.

0
Eismensch  07.11.2016, 12:25
@Johannes3112

Kann man auch machen, mann muss dann jedoch die Unterschiede zwischen .isEmpty() und .equals(s) beachten. Hierzu hatte ich mal eine schöne Erklärung auf Stackoverflow gefunden, welche ich einfach mal zitiere:

"The main benefit of "".equals(s) is you don't need the null check (equals will check its argument and return false if it's null), which you seem to not care about. If you're not worried about s being null (or are otherwise checking for it), I would definitely use s.isEmpty(); it shows exactly what you're checking, you care whether or not s is empty, not whether it equals the empty string"

Quelle: http://stackoverflow.com/questions/3321526/should-i-use-string-isempty-or-equalsstring

0