在文本文件中的二维字符数组在java中有空格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在文本文件中的二维字符数组在java中有空格相关的知识,希望对你有一定的参考价值。
我有一个文本文件,其中包含奖牌的团队成绩,每一行代表一个团队在五场比赛中的总奖牌,每个角色是单个游戏中的奖牌:
GSGBS
SSBGG
G SB
我使用扫描仪将文件转换为字符串:
String fileName = keyboard.nextLine();
Scanner teamMedals = new Scanner (new File (fileName));
然后我使用while循环打印每个团队的奖牌:
int teamNumber = 0;
while (teamMedals.hasNext()) {
String x = teamMedals.nextLine();
teamNumber += 1;
System.out.println("Team #" + teamNumber + "medals: " + x);
}
我创建了这个空的二维数组,由分数填充:
int numberOfGames = 5
char [] [] teamScoresArray = new char [teamNumber][numberOfGames.length];
我需要用每个团队的一个char填充每个子数组元素。所以结果看起来像这样:
[['G','S','G','B','S'],['S','S','B','G','G'],['G',' ','S','B',' ']]
问题是,因为有空格和新行我不断收到此错误:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
答案
不要使用Scanner
来简单地读取文本文件。使用BufferedReader
可获得更好的性能。
char[][] array;
try (BufferedReader in = new BufferedReader(new FileReader(fileName))) {
List<char[]> list = new ArrayList<>();
for (String line; (line = in.readLine()) != null; )
list.add(line.toCharArray());
array = list.toArray(new char[list.size()][]);
}
更好的是,使用Files.lines(Path path)
流处理(Java 8+):
char[][] array = Files.lines(Paths.get(fileName))
.map(String::toCharArray)
.toArray(char[][]::new);
产量
System.out.println(Arrays.deepToString(array));
[[G, S, G, B, S], [S, S, B, G, G], [G, , S, B, ]]
以上是关于在文本文件中的二维字符数组在java中有空格的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MATLAB 中连接元胞数组中的字符串,它们之间有空格?