Hallo zusammen,
ich habe da was programmiert, dass zwar nach meinen Vorstellungen funktioniert, aber nicht schön aussieht und besser gemacht werden kann.
Ich habe eine Datei, in der in der ersten Zeile Integerwerte stehen, die ich Variabeln zuweisen möchte.
Die erste Zeile der Datei ist so aufgabeaut:
_____3_______ 4________2
(der Unterstrich symbolisiert Leerzeichen)
Meine jetzige Version:
Nach dem Einlesen mit dem Scanner splitte ich den String nach einem Leerzeichen. So erhalte ich ein String[] mit sehr viele Arrays in dennen nur ein Leerzeichen steht. Aus diesem Grund habe ich nochmal eine for-schleife, die jedes Array-Indize mit einer if anweisung überprüft,ob da eine Zahl drin steht oder nicht. Nur die Indizies, die eine Zahl enthalten werden in eine neue ArrayList hinzugefügt.
[Java]
public static void main(String[] args) {
ArrayList vert= new ArrayList();
try {
//als Parameter kommt der Pfad
Scanner s = new Scanner(new BufferedReader(new FileReader("file")));
int anz_punkt=0;
int anz_poly=0;
int anz_color=0;
ArrayList<Integer> values = new ArrayList<Integer>();
//lese die erste Zeile
String anfangskopf=s.nextLine();
String[] bw = anfangskopf.split(" ");
//überprüfe, ob in bw eine Zahl steht oder ein leerzeichen. Wenn eine Zahl, dann füge sie in ein ArrayList ein
for(int i=0; i<bw.length;i++){
if(bw.matches("[1-9]")){
values.add(Integer.valueOf(bw));
}
}
//normale ausgabe auf die Konsole
for (Integer integer : values) {
System.out.println(integer);
}
//weise den Wert der Liste der varibalen zu
anz_punkt=values.get(0);
anz_poly=values.get(1);
anz_color=values.get(2);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[/code]
Ziemlich aufwendig, finde ich!!!
Ich habe vorher dieses versucht. Wenn das klappen würde spare ich mir die for schleife und kann direkt den variablen die werte zuweisen.
[Java]String[] bw = anfangskopf.split("[1-9]");[/Java]
Nach dem online RegEx Editor werden alle Zahlen in der Zeile gematcht. Bei der Ausgabe auf die Konsole gibt er mir jedoch nichts aus.
Ich bitte euch um bessere Vorschläge oder Verbesserungen
Beste Grüße
ich habe da was programmiert, dass zwar nach meinen Vorstellungen funktioniert, aber nicht schön aussieht und besser gemacht werden kann.
Ich habe eine Datei, in der in der ersten Zeile Integerwerte stehen, die ich Variabeln zuweisen möchte.
Die erste Zeile der Datei ist so aufgabeaut:
_____3_______ 4________2
(der Unterstrich symbolisiert Leerzeichen)
Meine jetzige Version:
Nach dem Einlesen mit dem Scanner splitte ich den String nach einem Leerzeichen. So erhalte ich ein String[] mit sehr viele Arrays in dennen nur ein Leerzeichen steht. Aus diesem Grund habe ich nochmal eine for-schleife, die jedes Array-Indize mit einer if anweisung überprüft,ob da eine Zahl drin steht oder nicht. Nur die Indizies, die eine Zahl enthalten werden in eine neue ArrayList hinzugefügt.
[Java]
public static void main(String[] args) {
ArrayList vert= new ArrayList();
try {
//als Parameter kommt der Pfad
Scanner s = new Scanner(new BufferedReader(new FileReader("file")));
int anz_punkt=0;
int anz_poly=0;
int anz_color=0;
ArrayList<Integer> values = new ArrayList<Integer>();
//lese die erste Zeile
String anfangskopf=s.nextLine();
String[] bw = anfangskopf.split(" ");
//überprüfe, ob in bw eine Zahl steht oder ein leerzeichen. Wenn eine Zahl, dann füge sie in ein ArrayList ein
for(int i=0; i<bw.length;i++){
if(bw.matches("[1-9]")){
values.add(Integer.valueOf(bw));
}
}
//normale ausgabe auf die Konsole
for (Integer integer : values) {
System.out.println(integer);
}
//weise den Wert der Liste der varibalen zu
anz_punkt=values.get(0);
anz_poly=values.get(1);
anz_color=values.get(2);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[/code]
Ziemlich aufwendig, finde ich!!!
Ich habe vorher dieses versucht. Wenn das klappen würde spare ich mir die for schleife und kann direkt den variablen die werte zuweisen.
[Java]String[] bw = anfangskopf.split("[1-9]");[/Java]
Nach dem online RegEx Editor werden alle Zahlen in der Zeile gematcht. Bei der Ausgabe auf die Konsole gibt er mir jedoch nichts aus.
Ich bitte euch um bessere Vorschläge oder Verbesserungen
Beste Grüße