2017-11-25 17 views
-1

私はコードを記述し、ユーザーが3座標のセットを入力したことが特定の三角形であることを証明するメソッドを実装する必要がある学校プロジェクトがあります。私の3点の距離を取得するために主以外のメソッドのコード

私の3つのポイントP1、P2、P3の間の距離を取得するコード行を書き込もうとしています。私はx1、x2、x3、y1、y2、y3のような私の確立された座標をどのように参照するのかわかりません。 は、ここに私のコードです:

import javax.swing.JOptionPane; 

public class EpsteinProj3 
{ 
    public static void main (String args[]) 
    { 
    String input1 = JOptionPane.showInputDialog("Enter coordinate A"); 
    String input2 = JOptionPane.showInputDialog("Enter coordinate B"); 
    String input3= JOptionPane.showInputDialog("Enter coordinate C"); 
    System.out.println("Your Triangle is: " + input1 + " " + input2 + " " + input3); 

    //double temp = Double.parseDouble(input1); 
    //System.out.println("" + temp); 

    //double temp1 = Double.parseDouble(input2); 
    //System.out.println("" + temp1); 

    //double temp2 = Double.parseDouble(input3); 
    // System.out.println("" + temp2); 

     Double x1, x2, x3; 
     Double y1, y2, y3; 

     x1 = Double.parseDouble(input1.substring(1, input1.indexOf(","))); 
     y1 = Double.parseDouble(input1.substring(input1.indexOf(",") +1, input1.length()-1)); 
     Point P1 = new Point(x1, y1); 

     x2 = Double.parseDouble(input2.substring(1, input2.indexOf(","))); 
     y2 = Double.parseDouble(input2.substring(input2.indexOf(",") +1, input2.length()-1)); 
     Point P2 = new Point(x2, y2); 

     x3 = Double.parseDouble(input3.substring(1, input3.indexOf(","))); 
     y3 = Double.parseDouble(input3.substring(input3.indexOf(",") +1, input3.length()-1)); 
     Point P3 = new Point(x3, y3); 


     System.out.println("Point A is " + P1.toString()); 
     System.out.println("Point B is " + P2.toString()); 
     System.out.println("Point C is " + P3.toString()); 

     //scalene, isosceles, right 


} 

public static double distanceBetween() 
{ 
    double Dis1 = Math.sqrt((x1-x2)^2 + (y1- y2)^2); 
    Dis1 = Math.sqrt((x1-x2)^2 + (y1- y2)^2); 
} 

} 
+0

正確なエラーとスタックトレースは何ですか? – Li357

+0

これは、カッコが有効な番号の一部ではないためです。両括弧を除外するには 'input.substring(1、input.indexOf("、 "))'と 'input.substring(input.indexOf("、 ")+ 1、input.length - 1) 。 – Li357

+0

この問題は、使用されているIDEとは関係ありません。タグを追加する必要はありません。 –

答えて

-2

あなたは、文字列の最初の要素から読み始めたからです。 あなたはフォーマットが常に

x = Double.parseDouble(input1.substring(1, input1.indexOf(","))); 
    y = Double.parseDouble(input1.substring(input1.indexOf(",") +1, input1.length()-1)); 
+0

最後のかっこはどうですか? – Li357

+0

しかし、私のxとyコードをあなたのものに置き換えてしまった今、私のエラーは次のようになります:スレッド "main"の例外java.lang.NumberFormatException:入力文字列: "5.0" –

+0

残念ながら最後の幻滅は覚えていません。私の編集された答えを見る@LionelEpstein – joao86

0

、その後(POSX、POSY)になることを確信している場合、私は構文解析ポイントのfollowing正規表現を使用しています。これにより、オプションの(または)と、オプションのスペースが,の後に可能になります。

注:この例ではjava.awt.Pointを使用しているため、スイングの実装にはInteger.parseIntDouble.parseDoubleに置き換える必要があります。

public class StringToPoint { 
private static final Pattern POINT_PATTERN = Pattern.compile("(?:\\()?([0-9]+)?,(?:)?([0-9]+)?(?:\\))?"); 

private static Point parsePoint(String point){ 
    Matcher matcher = POINT_PATTERN.matcher(point); 
    if (!matcher.matches() || matcher.groupCount()!=2){ 
     throw new IllegalArgumentException(String.format("%s cannot be parsed as point",point)); 
    } 
    return new Point(
     Integer.parseInt(matcher.group(1)), 
     Integer.parseInt(matcher.group(2)) 
    ); 
} 

@Test 
public void test(){ 
    TestCase.assertEquals(new Point(123,456), parsePoint("(123,456)")); 
    TestCase.assertEquals(new Point(123,456), parsePoint("(123, 456)")); 
    TestCase.assertEquals(new Point(123,456), parsePoint("123, 456")); 
    TestCase.assertEquals(new Point(123,456), parsePoint("123,456")); 
} 
} 
+0

私は助けてくれてありがとうございます。私の3点P1、P2、P3の間の距離を取得しようとしています。私はメソッドを作成しました:public static double distanceこれらの2つのポイント間の距離を取得しようとする(Point P1、Point P2)。しかし、その中に私は2倍のDis1 = Math.sqrt((x1-x2)^ 2 +(y1-y2)^ 2)を持つ。Dis1 = Math.sqrt((x1-x2)^ 2 +(y1-y2)^ 2); x1とy1などが認識されないので間違っています –

+0

いいえ、ポイント間の距離を求める質問を編集しました。元の質問は、文字列からポイントを解析することでした。質問を編集して別の質問をしたり、別の質問を表示したりしないでください。これは私があなたの質問を落とした理由です。 – Bedla

+0

私はここに新しいので、私はルールを遵守しなかった場合は申し訳ありません。私はもともと新しい質問をしましたが、最初の質問に90分待っていました。私はちょうど質問に追加する方法を探したかった。ごめんなさい –

関連する問題