2012-07-13 2 views
1

텍스트 파일을 사용하여 시작 보드를 지정하고 완성 된 보드를 비슷한 형식으로 새 텍스트 파일에 쓰려는 삶의 클론 게임을 만들고 싶습니다. 예 : 이로드 :Java에서 문자열을 처리하는 가장 좋은 방법

위원회에서이 같은

 
wbbbw 
bbbbb 
wwwww 
wbwbw 
bwbwb 

을 파일에서 다음 출력 뭔가 :

보드 아웃 :

 
wbbbw 
bbbbb 
wwwww 
wwwww 
bwbwb 

나는 (2 차원 배열을함으로써이 작업을 수행 char[][] board) 문자를 한 줄씩 문자로 읽어 들이고 String.charAt()을 사용하여 각 문자에 액세스하여 배열에 저장합니다.

는 그 후, 다시 String.valueOf() I를 사용하여 문자열을, 기판 (즉, board[0], board[1] 등)의 각 요소를 변환하고, 두 번째 파일에 새로운 줄이 물품.

나는이 일을하기에 바보인데, 파일 -> 문자열 -> 배열 -> 문자열 -> 파일 과정을 살펴 보는 것이 더 좋은 방법이라고 말해주십시오.

답변

0

파일을 읽는 동안 각 줄마다 String.toCharArray()을 사용할 수 있습니다.

char[][] board = new char[5][]; 
int i = 0; 
while((line = buffRdr.readLine()) != null) { 
    board[i++] = line.toCharArray(); 
} 

그리고 String.valueOf() 또는 java.util.Arrays.toString() 중 하나를 쓰는 동안

.

for(int i=0; i<board.length; i++) { 
    //write Arrays.toString(board[i]); 
} 
0
// Remember to handle whitespace chars in array 
char[] row = "wbbbw bbbbb wwwww wbwbw bwbwb".toCharArray() 

다른 모든 것들이 좋을 것 같습니다.

0

나만의 JSON 대신 텍스트 형식을 사용하는 것이 어떨까요?

2 차원 배열을 읽고 쓸 수있는 수많은 JSON 파서가 있습니다.

원본 파일에서 직접 쉽게 읽을 수있는 이점과 성가신 문자열 형식을 구문 분석하지 않아도된다는 이점이 있습니다.

+1

JSON을 사용하여 라이브러리를 추가하는 것만으로도 지나치게 과장됩니다. Java에 JSON 구문 분석기가 내장되어 있다면 더 합리적입니다. – LanguagesNamedAfterCofee

0
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 

public class GameOfLife 
{ 
    private String mFilename; 
    private ArrayList<String> mLines; 

    public GameOfLife(String filename) 
    { 
     mFilename = filename; 
     read(); 
    } 

    public char get(int x, int y) 
    { 
     String line = mLines.get(y); 
     return line.charAt(x); 
    } 

    public void set(char c, int x, int y) 
    { 
     String line = mLines.get(y); 
     String replacement = line.substring(0, x) + c + line.substring(x + 1, line.length()); 
     mLines.set(y, replacement); 
    } 

    private void read() 
    { 
     mLines = new ArrayList<String>(); 

     try 
     { 
      BufferedReader in = new BufferedReader(new FileReader(mFilename)); 
      String line = in.readLine(); 

      while (line != null) 
      { 
       mLines.add(line); 
       line = in.readLine(); 
      } 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    private void write() 
    { 
     try 
     { 
      BufferedWriter out = new BufferedWriter(new FileWriter(mFilename)); 

      for (String line : mLines) 
      { 
       out.write(line + "\n"); 
      } 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
관련 문제