2014-06-09 2 views
0

텍스트 파일을 가져 와서 해당 파일의 텍스트에서 2 차원 배열을 초기화해야합니다. 텍스트 파일의 각 행은 20 자입니다. 5 라인.자바 : 2D 배열로 텍스트 파일

지금까지 내가 가지고있는 모든 나는 순간에 데 문제는 내가 오류가 있다는 것입니다

int totalRow = 5; 
int totalColumn = 20 
char[][] myArray = new char[totalRow][totalColumn]; 
File file = new File("test.txt"); 
Scanner scanner = new Scanner(file); 

int row = 0; 
int column = 0; 

    while (scanner.hasNextLine()){ 
     while (scanner.hasNext()){ 
      myArray[row][column] = scanner.next(); 
      column++; 
     } 
    row++; 
    } 

입니다 : 문자열은 또한 내가 스캐너에 익숙하지 않다

를 숯불로 변환 할 수 없습니다 그래서 hasNextLine과 hasNext가 내가 성취하고자하는 것에 적합하지 않다면 저에게 알려주세요.

+0

http://mattgemmell.com/what-have-you-tried/ – The111

+1

앞으로 이동합니다. 더 많은 코드를 작성하십시오. 특정 문제가 발생하면 정확한 질문을하십시오. –

+0

충분히 주저하지 않습니다. – TryingToCode

답변

1

아니 가장 효율적인 솔루션,하지만 원래 버전에서 너무 많이 벗어나지 않으면 서, 이것은 당신이 원하는 일을해야합니다

int totalRow = 5; 
int totalColumn = 20; 
char[][] myArray = new char[totalRow][totalColumn]; 
File file = new File("test.txt"); 
Scanner scanner = new Scanner(file); 


for (int row = 0; scanner.hasNextLine() && row < totalRow; row++) { 
    char[] chars = scanner.nextLine().toCharArray(); 
    for (int i = 0; i < totalColumn && i < chars.length; i++) { 
     myArray[row][i] = chars[i]; 
    } 
} 

편집 : 두 번째 생각에, 당신은 칼럼에 대한 확신이 있다면 폭, 당신은 더 코드를 단순화 할 수 있습니다

int totalRow = 5; 
char[][] myArray = new char[totalRow][]; 
File file = new File("test.txt"); 
Scanner scanner = new Scanner(file); 

for (int row = 0; scanner.hasNextLine() && row < totalRow; row++) { 
    myArray[row] = scanner.nextLine().toCharArray(); 
} 
+0

고마워,이 완벽하게 작동합니다. – TryingToCode

1

개인적으로 BufferReader 인스턴스를 사용하여 텍스트 파일의 각 행의 객체를 가져옵니다. 반복기를 사용하여 각 행의 인스턴스를 얻은 후에는 How to convert/parse from String to char in java? 링크를 따라 해당 객체를 String 및 char로 변환 할 수 있습니다. 이미하는 법을 모른다면.

또한 nextLine이 null인지 확인하십시오. iterator를 빠져 나가고 싶다. 원하는대로이 char를 2D 배열에 넣을 수 있습니다. 이게 도움이 되길 바란다.