J2ME游戏中读入文本并存储在String数组中

类别:Java 点击:0 评论:0 推荐:

一个在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]
[总结]
程序要求很简单,一定有更好的办法来实现,结果参阅了大量资料,一无所获.

本文地址:http://com.8s8s.com/it/it11974.htm