2017-10-19 7 views
2

(x1,y1)という形式のコンソールから入力座標を取得しようとしています。距離のJavaコードinput(1,2)(2,3)

入力から数字だけを選択し(かっこは避ける)どうすればよいですか? は、私は私が正規表現を使用して、入力を解析する必要があります知っているが、このコード

import java.io.*; 

public class main { 
    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String[] input1 = br.readLine().split(","); 
     String[] input2 = br.readLine().split(","); 
     double x1 = Double.valueOf(input1[0]); 
     double y1 = Double.valueOf(input1[1]); 


     double x2 = Double.valueOf(input2[0]); 
     double y2 = Double.valueOf(input2[1]); 

     double result = Math.sqrt(((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))); 
     System.out.println(String.valueOf(result)); 
    } 
} 
+0

は、データが(x、y)の形式である必要がありますか? – Deadron

+0

はい、入力は複数のペアにあり、フォーマットは(x、y) – user8534573

+0

です。正規表現を使用する必要はありません。あなたは単にブラケットを取り除くことができます。 – logger

答えて

0

はい、あなたがテキストから数値を取るために正規表現を使用する必要があるためにそれを行う方法がわかりません。

String input = br.readLine(); 
// Compile you pattern with two groups to capture each num 
Pattern pattern = Pattern.compile("\\((\\d+(\\.\\d+)?),(\\d+(\\.\\d+)?)\\)"); 
// Match your input 
Matcher matcher = pattern.matcher(input); 
// If your input matches to pattern you want, then you take numbers 
if (matcher.find()) { 
    double x = Double.parseDouble(matcher.group(1); 
    double y = Double.parseDouble(matcher.group(3); 
    //... Other code you need 
} 

最後に、私はここに、たとえば、正規表現についての詳細を読むためにあなたをお勧めします:このような 何か
Regular Expressions TutorialsPoint

+0

構文を修正しました。エラー、なぜ1桁の整数だけですか? – laune

+1

修正済み、ありがとうございました – i0xHeX

+0

私は間違いなくTutorialsPointで与えられた例を通過します...ありがとう! – user8534573