所以我得到那个字符串索引超出范围意味着我超出了集合的范围,但我不太确定我是如何用我的代码做到这一点的。
此代码应该从包含 3 个整数的文本文件中读取(前两个与此相关,分别为行数和列数),然后是一系列字符。因此,它首先读取并保存前三个数字,然后将文件的其余部分转换为字符串。然后,它通过使用文本文件的尺寸设置一个字符数组,然后用文本文件的字符一个字符一个字符地填充这些值。
但是,当我尝试打印代码时,遇到字符串索引超出范围错误,无法找到问题所在。
这是代码:
import java.util.*;
import java.io.*;
public class SnakeBox {
// instance variables
private char[][] box;
private int snakeCount;
private int startRow, startCol;
private int endRow, endCol;
private int rows, cols, snakes;
Scanner keyboard = new Scanner(System.in);
/** Create and initialize a SnakeBox by reading a file.
@param filename the external name of a plain text file
*/
public SnakeBox(String fileName) throws IOException{
Scanner infile = new Scanner(new FileReader(fileName));
int count = 0;
String s = "";
rows = infile.nextInt();
cols = infile.nextInt();
snakes = infile.nextInt();
infile.nextLine();
box = new char[rows][cols];
while (infile.hasNext()) {
s += infile.next();
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
count++;
char c = s.charAt(count);
box [i][j] = c;
}
}
}
文本文件是:
16 21 4
+++++++++++++++++++++
+ +
+ SSSSS +
+ S S +
+ S SS +
+ S S +
+ S S SS +
+ SS S +
+ S +
+ S SSSSSS +
+ S S +
+ S S +
+ S SSS S +
+ S S +
+ SSSSS +
+++++++++++++++++++++
谢谢你。