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 hätte mal eine kleine Frage und würde mich über eine kurze Antwort sehr freuen.
Ich muss in meiner Übungsaufgabe Argumente in der Konsole einlesen. Als erstes beliebig viele Integer, mit denen das Programm arbeiten soll und dahinter mehrere Strings. Wie ich die Integer einlesen kann weiß ich. Doch wie mache ich dem Programm klar, dass danach noch Strings folgen? Die Strings sollen dann am besten im Array task gespeichert werden.
Ein möglicher Aufruf wäre: java Main 12 9 8 -20 7 sort printer
Java:
public class Main {
public static void main(String[] args) {
int[] input = new int[Integer.parseInt(args[0])];
String[] task = new String[args[0]]; // das funktioniert nicht --> incompatible types
}
}
vielleicht nicht die sauberste Antwort aber eine Möglichkeit das Problem zu lösen
Java:
public class Main {
public static void main(String[] args) {
/*
* Speicher einfach alle Werte in Strings
*/
ArrayList<String> wörter = new ArrayList<String>();
ArrayList<Integer> zahlen = new ArrayList<Integer>();
ArrayList<String> t = new ArrayList<String>();
t.add("Hallo");
t.add("1");
t.add("YEAAH");
t.add("4494");
/*
* Hier alle args reinpacken
*/
for(int i=0; i<t.size();i++){
wörter.add(t.get(i));
}
/*
* Hier alle Strings, welche Integer sind, in den anderen Array schmeißen
*/
for(int i=0;i<wörter.size();i++){
try {
zahlen.add(Integer.parseInt(wörter.get(i)));
wörter.remove(wörter.get(i));
} catch(NumberFormatException nfe){
// nichts tun, da sie im richtigen Array gespeichert sind.
}
}
for(int i=0;i<wörter.size();i++){
System.out.println(wörter.get(i));
}
for(int i=0;i<zahlen.size();i++){
System.out.println(zahlen.get(i));
}
}
}
Müsstest das nur noch für deine args abändern. Helfe dir gerne, falls du nicht weiter kommst :toll:
Die Frage ist, was du mit der Eingabe machen willst.
Willst du mit den Integern rechnen? Dann musst du sie parsen.
Willst du sie nur ausgeben? Dann musst du sie gar nicht in zahlen umwandeln.
Falls du sie parsen möchtest, würde ich wie folgt vorgehen:
Java:
public static void main(String[] args){
List<Integer> integers = new ArrayList<Integer>();
List<String> strings = new ArrayList<String>();
for(String arg : args){
try{
integers.add(Integer.valueOf(arg));//Versuch als integer zu parsen
}
catch(NumberFormatException notAnInt){
strings.add(arg);// Versuch fehlgeschlagen: Behandlung als String
}
}
// Jetzt mit integers und Strings machen, was immer du willst.
}
Ist im Prinzip das gleich was auch coco07 gepostet hat, ich finde diese vorgehensweise aber deutlich einfacher und sauberer als alles in ein neues String-array zu kopiern und anschließend rauszulöschen.
ja das ist besser. Das verstehe ich auch eher als coco07s Lösung. Danke dir!
Ich möchte nachher mit den Integern rechnen. Die Strings sollen angeben, welche Rechnung dann mit den Integern ausgeführt werden soll.
Auch wenn verständlich ganz schlechter Stil. Exceptions sind, wie der Name schon sagt, Ausnahmen und sollten auf keinen Fall dazu verwendet werden, den normalen Programmfluss zu steuern.
Deros@ Auch wenn Ausnahmeobjekte nicht zur normalen Programmsteuerung erzeugt werden sollten, ist dieser Weg am einfachsten.
Alternativ gibt es noch diesen Weg:
Java:
String zahl= "125";
if(zahl.matches("[0-9]+"))
// Eine Zahl
else
// Keine Zahl
Habs allerdings nicht probiert, sollte allerdings klappen...