そのため、String index out of range は、コレクションの範囲を超えていることを意味しますが、自分のコードでそれをどのように行っているのかよくわかりません。
このコードは、3 つの int (最初の 2 つはそれぞれ行数と列数としてこれに関連するものです) と一連の文字を含むテキスト ファイルから読み取ることになっています。最初に最初の 3 つの数値を読み取って保存し、次にファイルの残りを文字列に変換します。次に、テキスト ファイルのサイズで char の配列を設定し、これらの値にテキスト ファイルの文字を 1 文字ずつ入力することで、これを追跡します。
ただし、コードを印刷しようとすると、文字列インデックスが範囲外というエラーが発生し、問題を見つけることができません。
これはコードです:
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 +
+++++++++++++++++++++
ありがとうございました。