これは私の最初の質問ですが、私はそれをよく尋ねます。とにかく、私はAndroidのテキストファイルからデータを読み込もうとしていますが、何らかの理由で何も返しません。つまり、IndexOutOfBounds例外です。関連するすべてのコード:Androidのテキストファイルからデータを読み込むと何も返されません。
public Question getNextQuestion(int num) {
Log.d(TAG, array.toString());
return array.get(num+1);
}
public ArrayList<Question> getData(String str) throws NumberFormatException, IOException {
Log.d(TAG, "STARTING getData");
Log.d(TAG, str);
ArrayList<Question> a = new ArrayList<Question>();
String[] strline = str.split("//");
for (int j = 0; j < strline.length; j++) {
if (strline[j] == null) {
strline[j] = "TESTING";
Log.d(TAG, strline[j]);
}
}
int num = 0;
int x = 0;
String y = strline[x];
while (x == 0 || y != null) {
num++;
String[] data = y.split("//");
Log.d(TAG, y);
if (data.length >= 7) {
a.add(new Question(Integer.parseInt(data[0]), data[1], data[2], data[3], data[4], data[5], Integer.parseInt(data[6])));
Log.d(TAG, a.get(a.size()).getText());
}
else if (data.length >= 3) {
a.add(new Question(Integer.parseInt(data[0]), data[1], data[2]));
Log.d(TAG, a.get(a.size()).getText());
}
x++;
if (x < strline.length)
y = strline[x];
else
break;
}
for (int i=0; i<a.size(); i++){
Log.d(TAG, a.get(i).getText());
}
Log.d(TAG, "ENDING getdata");
return a;
}
public ArrayList<Question> openFile() throws IOException {
Log.d(TAG, "STARTING openFile()");
//FileReader fr = new FileReader("data/data/scibowl.prog/questionsb.txt");
FileInputStream fis;
String storedString = "";
try {
fis = openFileInput("questionsb.txt");
DataInputStream dataIO = new DataInputStream(fis);
String strLine = null;
while ((strLine = dataIO.readLine()) != null) {
storedString = storedString + strLine;
}
dataIO.close();
fis.close();
}
catch (Exception e) {
}
array = getData(storedString);
Log.d(TAG, "DID open file, ending openFile()");
return array;
}
これはLogCatで印刷されます:
onCreate done
STARTING openFile()
STARTING getData
ENDING getdata
DID open file, ending openFile()
right before Toast.makeText
[]
Caused by: java.lang.IndexOutOfBoundsException: Invalid location 1, size is 0
at java.util.ArrayList.get(ArrayList.java:341)
at scibowl.prog.Round.getNextQuestion(Round.java:55)
at scibowl.prog.RoundView.<init>(RoundView.java:26)
at scibowl.prog.Round.onCreate(Round.java:35)
私は私に言うこと自由に感じしかし、BufferedReadersへStringBuffersからFileInputStreamsと実質的にすべてを試み、および関連するAndroidのドキュメントを読みました私は十分にそれを読んでいないよ。誰も私がなぜ要素を持たない配列を取得し続けるのか知っていますか?
わずかBLOCKQUOTE規則に適合するように編集されたにもかかわらず、参照のためにテキストファイル:周波数はγ線と紫外線の間であり、標準的な電磁スペクトル、//電波//で
1 //マイクロ波// X線/ /赤外線// 1
2 //電磁波の波は、およそ10^9Hz~10^12Hzの周波数を含みますか?//可視光//ガンマ線//紫外光//マイクロ波// 3
3 //米国のpoのおよそ何パーセント// 30%// 40%// 50%// 60%// 0
4 // 100キロの人が休息から歩き始め、4.0m/s以上に加速した場合一定の加速度で秒、彼がどれだけ仕事をするのでしょうか?// 600 // J 800 J // 1200 J // 2000 J // 1つの
ええ、申し訳ありませんが、logcatの空のArrayListはgetdata()からのものです。私はまだ何がうまくいかないのか分からない。 – biblioman
おかげで、申し訳ありませんが、私はそれを理解し終えました - しかし、どのように忘れてください。 – biblioman