0

不必经过 700-800 行文本,每行都是以下内容的一些变体:

-5,-8,0:2.0

我有一个必须将每一行传递给的方法,即anotherclass.setBlock(xCoord, yCoord, zCoord, id). 因此,对于上面的示例,它将是:

anotherclass.setBlock(x-5, y-8, 0, 2);

有没有办法解析每一行文本并做到这一点?我一直在寻找年龄,这要么是因为我找不到正确的说法,要么我根本找不到答案)

我试过手动做,但是在 100 行之后,它开始感觉效率很低。我不能真正使用 for 循环,因为坐标不是连续的(或者更确切地说,它们是连续的,但仅适用于 1 或 2 行)。

4

1 回答 1

5
import static java.lang.Double.parseDouble;
import static java.lang.Integer.parseInt;
import static java.util.regex.Pattern.compile;

...

public static void main(String[] args) {
  BufferedReader r = null;
  try {
    r = new BufferedReader(new InputStreamReader(
        new FileInputStream("myfile.txt"), "UTF-8"));
    final Pattern p = compile("(.+?),(.+?),(.+?):(.+)");
    String line;
    while ((line = r.readLine()) != null) {
      final Matcher m = p.matcher(line);
      if (!m.matches())
        throw new RuntimeException("Line in invalid format: " + line);
      anotherclass.setBlock(parseInt(m.group(1)), parseInt(m.group(2)), 
          parseInt(m.group(3)), parseDouble(m.group(4)));
    }  
  }
  catch (IOException e) { throw new RuntimeException(e); }
  finally { try { if (r != null) r.close(); } catch (IOEXception e) {} }
}
于 2012-04-22T17:02:01.930 回答