1

x、y座標として保存され、ノードとして保存される値の複数のセットを読み取る際に問題が発生しています。私はこのプログラムを Java で書いています。テキスト ファイルからの一部の入力行は、次のようになります。

(220 616) (220 666) (251 670) (272 647) # Poly 1

(341 655) (359 667) (374 651) (366 577) # Poly 2

(311 530) (311 559) (339 578) (361 560) (361 528) (336 516) # Poly 3

これらの各座標を読み取り、node(x,y) の形式でノードとして保存する必要があります。これを達成するための最良の方法は何ですか?これまでのところ、次の行がある間に入力ファイルを読み取るスキャナーを使用しています。行を文字列 s に保存し、そのように解析しようとしています

while (scanner.hasNextLine()) {
   String s = nextLine();

   //parse code goes here
   //Currently this is what I have, but I think I'm going about it in a weird way
   String newS = s.substring(s.indexOf("(" + 1, s.indexOf(")"));
   String newX = newS.substring(0, newS.indexOf(" "));
   String newY = newS.substring(newS.indexOf(" ") + 1);
   int x = Integer.parseInt(newX);
   int y = Integer.parseInt(newY);
}

区切り記号の上のいくつかの投稿を読みましたが、まだ少し迷っています。基本的に、ループして各 x、y 座標をノードとして保存し、それを配列に格納できるようにする必要があります。

どんな助けでも役に立ちます!ありがとう!

4

2 に答える 2

1

正規表現を使用して座標を分離できます

    while (scanner.hasNextLine()) {   
       String currentLine = scanner.nextLine();
       Pattern myPattern = Pattern.compile("[0-9][0-9][0-9] [0-9][0-9][0-9]");
       Matcher myMatcher = myPattern.matcher(currentLine);

       while (myMatcher.find()) {
           String[] coordinatesSplit = myMatcher.group().split(" ");
           int x = Integer.parseInt(coordinatesSplit[0]);
           int y = Integer.parseInt(coordinatesSplit[1]);
       }
    }
于 2013-09-16T04:43:33.857 に答える