Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich schreibe gerade mein erstes Java Programm, Ziel ist es eine Klasse zu schreiben die Wörter, die durch mehrere Parameter eingegeben wurden Rückwerts auszugeben. Ich habe es so hinbekommen, dass es funktioniert, aber leider muss ich einige Codezeilen in Main schreiben, damit ich schaffe! Ich will den Abschnitt, der überprüft, ob wieviele Parameter es gibt in die Klasse integieren!
Also das ich nur:
Java:
Backstring hallo = new Backstring(?????);
hallo.print();}
brauche, den Rest sollte die Klasse alleine erledigen können.
Wie mache ich das?
Mein erstes Programm wird sicher nicht perfekt sein, also was sollte ich ändern, damit es besser wird?
Java:
public class Backstring {
public String rueck;
public Backstring () { //Konstruktor, wenn keine Eingabe
rueck = "Teststring";
}
public Backstring(String Stringname){ // Konstruktur, bei einer Eingabe
rueck = Stringname;
}
public void print() {
StringBuffer Ausgabe = new StringBuffer(rueck);
System.out.println(Ausgabe.reverse());
}
public static void main(String[] args) {
int i = 0;
String Hilfestring = "";
try{
for(; args[i]!=""; i++)
Hilfestring += args[i];}
catch (ArrayIndexOutOfBoundsException ex){};
//System.out.println("Es wurde kein Parameter eingegeben!");
Backstring hallo = new Backstring(Hilfestring);
hallo.print();}
}
public class Backstring {
public String rueck;
public Backstring () {
this("Teststring"); //Aufrufen des anderen Konstruktors, mit Parameter
}
public Backstring(String Stringname) {
rueck = Stringname;
}
public static void main(String[] args) {
Backstring hallo;
int i = 0;
String hilfestring = ""; //Variablen alle klein schreiben
//diese variante spart dir die Exceptionbehandlung, da du keine bekommen wirst
for(String arg: args)
Hilfestring += arg;
//damit hast du gleich beide Faelle behandelt und beide Konstruktoren genutzt
if (hilfestring.equals("")) {
System.out.println("Es wurde kein Parameter eingegeben!");
hallo = new Backstring();
} else {
hallo = new Backstring(hilfestring);
}
hallo.print();
}
}//class
das mit dem Konstruktor ist dahingehend praktisch, da du bei sehr komplexen Initialisierungen und mehreren Konstruktoren nicht Gefahr läufst bei einem Konstruktor etwas zu vergessen. Du reichst somit alles nötige oder Standardwerte an den umfangreichsten Konstruktor weiter, welche dann alle Daten hat um die Klasse entsprechend zu initialisieren. Das erhöht auch gleichzeitig die Lesbarkeit des Codes.
Das mit der for-schleife muss man einfach wissen. Du kannst sicherlich auch per index das Array abfragen aber so liest es sich auch besser. Das kannst du bspw mit allen Arrays oder Listen so lösen.
Eine normale Variante ohne Exception wäre:
Java:
for (int i=0; i<args.length; i++)
hilfestring += args[i]
EDIT: ah seh grad, bin gar net auf die Frage eingegangen .. aber die Antwort von Michael ist auch ausreichend
Danke für die Antwort.
Aber wenn ich die Sache im Konstruktur mache, dann verlangt er in main bei Backstring hallo = new Backstring(); einen Wert, der übergeben werden soll, wie löse ich das?
Mit setValues habe ich das Problem, das die Funktion nicht vor dem Konstruktor ausgeführt wird, wie mache ich das?
Java:
package aufgabe;
public class Backstring {
public String rueck;
public String Hilfestring = "";
public Backstring () { //Konstruktor, wenn keine Eingabe
rueck = Hilfestring;
}
public Backstring(String Stringname){ // Konstruktur, bei einer Eingabe
rueck = Stringname;
}
public void print() {
StringBuffer Ausgabe = new StringBuffer(rueck);
System.out.println(Ausgabe.reverse());
}
public void setValues(String[] valuesFromMain) {
int i = 0;
try{
for(; valuesFromMain[i]!=""; i++)
Hilfestring += valuesFromMain[i];}
catch (ArrayIndexOutOfBoundsException ex){};
}
public static void main(String[] args) {
//System.out.println("Es wurde kein Parameter eingegeben!");
Backstring hallo = new Backstring();
hallo.print();}
}
Danke für die Antwort.
Aber wenn ich die Sache im Konstruktur mache, dann verlangt er in main bei Backstring hallo = new Backstring(); einen Wert, der übergeben werden soll, wie löse ich das?