一个在J2SE中十分钟即告完成的代码,在J2ME中花费了一个下午.是什么样的代码呢? [要求]在游戏中读入文本形式存储的hints
[分析] J2ME没有BufferReader,用InputStreamReader吧 既然没有BufferReader,也就不要奢望有readLine()了,自己慢慢循环吧
[源代码] [code] /* read hint-------------------------------------- */ /** * This is the hints * */ String[][] hintStr;
/** * this specify the hint's show width */ final int hint_width = 8; int hint_num;
public boolean readHint(int stage) {
if (stage > 0 && stage < 4) { if (stage == 2) { hint_num = 4; } else { hint_num = 3; } } else { System.out.println("No this stage"); return false; }
try { String filename = "hint" + Integer.toString(stage); InputStreamReader in = new InputStreamReader(getClass() .getResourceAsStream(filename)); int num = -1; do { ++num; } while (in.read() != -1); in.reset(); char[] hintsdat = new char[num]; System.out.println(num); in.read(hintsdat); in.close();
String hint_temp = new String(hintsdat);
int j = 0; int i = 0; String hint_num_temp[] = new String[hint_num]; for (int x = 0; x < hint_num; x++) hint_num_temp[x] = ""; while (true) {
if (i < hintsdat.length) { if (hintsdat[i] != '\n') { hint_num_temp[j] += hintsdat[i]; i++; continue; } else if (j < hint_num) { System.out.println(i); i++; j++; } continue; }
break; }
// System.out.println("Creating....");
j = 0; for (i = 0; i < hint_num; i++) { String str = new String(hint_num_temp[i]); int str_num = str.length() / hint_width + 1; hintStr = new String[num][str_num]; for (int z = 0; z < str_num; z++) { if (z < str_num - 1) { hintStr[j][z] = ""; hintStr[j][z] += str.substring(z * hint_width, (z + 1) * hint_width); } else { hintStr[j][z] = ""; hintStr[j][z] += str.substring((z - 1) * hint_width); } System.out.println("hintStr[" + j + "][" + z + "]:" + hintStr[j][z]); } j++; }
} catch (IOException e) { System.out.println("Error"); } return true; } [/code] [总结] 程序要求很简单,一定有更好的办法来实现,结果参阅了大量资料,一无所获. 
|