Das lässt sich auch noch machen. Dabei soll jede Zeile nur einmal ausgegeben werden?
Da knallst du einfach zwischen Eingabe und Ausgabe noch ein Collections.shuffle(arrayList);, das Programm sieht dann so aus:
Code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class TextMischen {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: java TextMischen quelle ziel");
System.exit(0);
}
File in = new File(args[0]);
File out = new File(args[1]);
ArrayList<String> daten = new ArrayList<String>();
// Daten einlesen
try {
BufferedReader br = new BufferedReader(new FileReader(in));
String line;
while ((line = br.readLine()) != null) {
daten.add(line);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Zeilen mischen
Collections.shuffle(daten);
// Daten schreiben
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(out));
int anzahlZeilen = daten.size();
for (int i = 0; i < anzahlZeilen; i++) {
bw.write(daten.get(i)+"\n");
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Wenn die Zeilen direkt ausgegeben werden sollen, dann kannst du das so machen:
Code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class TextMischen {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Usage: java TextMischen quelle");
System.exit(0);
}
File in = new File(args[0]);
ArrayList<String> daten = new ArrayList<String>();
// Daten einlesen
try {
BufferedReader br = new BufferedReader(new FileReader(in));
String line;
while ((line = br.readLine()) != null) {
daten.add(line);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Zeilen mischen
Collections.shuffle(daten);
// Zeilen ausgeben
int anzahlZeilen = daten.size();
for (int i = 0; i < anzahlZeilen; i++) {
System.out.println(daten.get(i));
}
}
}
Lesezeichen