2014-06-09 71 views
0

我需要一个文本文件并从该文件中的文本初始化一个二维数组。文本文件中的每一行都有20个字符。 5行。Java:将文本文件转换为二维数组

到目前为止我只有

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++; 
    } 

我目前遇到的问题是,我得到错误:不能将字符串转换为char

另外,我不是很熟悉扫描仪类,所以如果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实例来获取文本文件中每行的对象。通过使用迭代器获得每行的实例后,可以通过以下链接将该对象转换为String和Char:How to convert/parse from String to char in java?。如果你不知道如何去做。

此外,请确保nextLine为空。你想退出迭代器。您可以根据需要将这些字符转换为二维数组。我希望这有帮助。

相关问题