2017-11-25 29 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

당신은 문자열의 첫 번째 요소에서 읽기 시작하기 때문. 당신이 형식이 항상 유지하는 경우 (POSX, POSY)는

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

나는 구문 분석 포인트 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 distanceBetween (Point P1, Point P2) 메소드를 만들었습니다. 하지만 그 안에는 이중 Dis1 = Math.sqrt ((x1-x2)^2 + (y1-y2)^2); Dis1 = Math.sqrt ((x1-x2)^2 + (y1-y2)^2); x1과 y1 등이 인식되지 않아 잘못되었습니다 –

+0

아니요, 점 사이의 거리를 묻는 질문을 편집했습니다. 원래 질문은 String에서 파싱 포인트에 관한 것이 었습니다. 질문을 편집하여 다른 질문을하거나 다른 질문을 대신 입력하십시오. 이것은 내가 왜 당신의 질문을 downvoted. – Bedla

+0

여기에 새로운 미안 그래서 내가 규칙을 지키지 않으면 미안해. 나는 원래 새로운 질문을 만들었지 만 첫 번째 질문을하기 위해 90 분을 기다렸습니다. 방금 질문에 추가 할 방법을 찾고 싶었습니다. 죄송합니다 –