Gar nicht. Strings sind nicht veränderbar, man kann höchstens neue Strings erschaffen, indem man z.B. String einString = einString + andererString; benutzt. Wenn man das nur ein oder zweimal machenmuss, ist das auch die einfachste Lösung. Wenn man allerdings viele Zeilen aus eine Datei auslesen will, empfiehlt sich ein StringBuilder.
Hier mal ein Beispiel, wie ich die Datei auslesen würde:
[code=Java]
File conwayFile = new File("C:\\Users\\meinName\\Desktop\\conway.txt");
BufferedReader buffer = null;
try {
buffer = new BufferedReader(new FileReader(conwayFile));
} catch (FileNotFoundException e) {
System.err.println("Eine gute Fehlermeldung");
e.printStackTrace();
}
int width = 0;
int height = 0;
if(buffer != null) {
StringBuilder builder = new StringBuilder(64);
try {
String firstLine = buffer.readLine();
if(isValid(firstLine)) {
width = firstLine.length();
height++;
builder.append(firstLine);
} else {
throw new IOException("Invalid first Line");
}
while(buffer.ready()) {
String nextLine = buffer.readLine();
if(isValid(nextLine)) {
if(nextLine.length() == width) {
builder.append(nextLine); height++;
} else {
throw new IOException("Line lenght does not match width!");
}
} else {
throw new IOException("Invalid line after " + height);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
buffer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Zwischenstatus:");
System.out.println(builder.toString());
System.out.println(width + " " + height);
}[/code]
dazu das isValid:
[code=Java] private static boolean isValid(String line) {
for(int i = 0; i < line.length(); i++) {
if(line.charAt(i) != 'X' && line.charAt(i) != 'O') return false;
}
return true;
}[/code]
Dadurch hätten wir nun als Ausgabe:
Wir haben also den ganzen Dateiinhalt in einem StringBuilder, wissen, dass er richtig sein müsste und kennen die Höhe und Breite der Welt. Jetzt musst du nur noch einen boolean-Array mit der Breite * Höhe anlegen (anders herum ginge auch, ich finde das aber besser), mit einer Schleife über den String gehen und für jedes X ein true und jedes O ein false (oder anderes herum, Hauptsache du weißt, was was ist). Das dürfte mit charAt(index) gehen, man kann mit builder.toString().toCharArray() aber auch erstmal ein char-Array erhalten. Und, falls du gar nicht erst in boolean umwandeln wilst, könntest du über die Methode auch einfach Arrays aus 'X' und 'O' -chars erstellen.
Aber da lass ich dicherstmal probieren, du sollst ja auch selbst was machen. 