JAVA 초보가 짠 엉성한 코드 String변환 질문

조회수 1552회
import java.util.Arrays;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.IOException;

public class traineroutput {
    public static void main(String args[]) throws IOException{

        BufferedReader br = new BufferedReader(new FileReader("c:/input.txt")); //인풋 파일 읽기
        while(true) {
            String lines = br.readLine(); 
            String [] Array1= lines.split("\\r?\\n");
            Arrays.toString(Array1);
            for (int i=1; i<489; i++){
            String [] Array2=String(Array1[i]).split(" ");
            String [] Array3=Array1[i-1].split(" ");

            Array2[0]=lat1;
            Array2[1]=lon1;
            Array2[2]=z1;

            Array3[0]=lat2;
            Array3[1]=lon2;
            Array3[2]=z2;

            double lat1, lon1, lat2, lon2;
            double theta1, theta2;
            double x1, x2, x3, y1, y2, y3, z1, z2;
            int r=63710000; //지구 반지름(m단위)
            double lat3= ;
            double lon3= ;
            double z3= ;

            x1= r*Math.cos(deg2rad(lat1/100))*Math.cos(deg2rad(lon1/100));//현 gps를 x좌표로 변환
            x2= r*Math.cos(deg2rad(lat2/100))*Math.cos(deg2rad(lon2/100));//이전 gps
            x3= r*Math.cos(deg2rad(lat3/100))*Math.cos(deg2rad(lon3/100));//목표지점 gps

            y1= r*Math.cos(deg2rad(lat1/100))*Math.sin(deg2rad(lon1/100));//현 gps를 y좌표로 변환
            y2= r*Math.cos(deg2rad(lat2/100))*Math.sin(deg2rad(lon2/100));//이전 gps
            y3= r*Math.cos(deg2rad(lat3/100))*Math.sin(deg2rad(lon3/100));//목표지점 gps

            //z는 고도값 쓰면 된다.

            double a= (y1-y2)/(x1-x2); //기울기들
            double b= (y3-y1)/(x3-x1);
            double c= (z1-z2)/(x1-x2);
            double d= (z3-z1)/(x3-x1);

            theta2= Math.atan(Math.abs(a-b)/(1+a*b));
            theta1= Math.atan(Math.abs(c-d)/(1+c*d));

              PrintWriter pw = new PrintWriter("c:/output.txt"); //아웃풋 파일 작성
              {
                    pw.print(theta1);
                    pw.println(" "+ theta2);
                }
                pw.close();

            }
            if (lines==null) break;

        }
        br.close();

    }

    //주어진 도(degree) 값을 라디언으로 변환  
    private double deg2rad(double deg){  
        return (double)(deg * Math.PI / (double)180);  
    }  

        // 주어진 라디언(radian) 값을 도(degree) 값으로 변환  
    private double rad2deg(double rad){  
        return (double)(rad * (double)180 / Math.PI);  
    }
}



죄송합니다...ㅠㅠ 귀한 곳에 누추한 질문을 올렸네요...
정말 엉성한 코드입니다만 eclipse에서 type 변환에 문제가 생긴다고 자꾸 그러네요...
어떤식으로든 조언, 문제점 지적 해주시면 정말 감사하겠습니다~! ㅠㅠ

1 답변

  • 컴파일 에러 나는 부분이 많은데요... 전체 소스를 올리신게 맞나요? 완성된 코드를 올리실게 아니라면 어느 라인에서 어떤 에러 메시지가 발생하는지를 정확하게 적어주시는게 좋습니다. 질문에 적어주신 'eclipse에서 type 변환에 문제가 생긴다고'가 어딘지 모르겠네요.

    그래서 컴파일 에러가 보이는대로 말씀드리면:

    String [] Array2 = String(Array1[i]).split(" "); // String이란 메서드가 없습니다.
    
    // 생략
    
    Array2[0] = lat1; // lat1이란 변수가 없습니다.
    
    // 생략
    
    double lat3 = ; // 변수 초기화 문법이 잘못되었네요.
    
    // 생략
    
    x1= r*Math.cos(deg2rad(lat1/100))*Math.cos(deg2rad(lon1/100)); 
    // deg2rad 메서드는 non-static 메서드로 선언되어 있습니다.
    // non-static 메서드를 static 호출방식으로 호출하면 안됩니다. 
    // non-static 메서드 호출방식으로 바꾸거나, 
    // 메서드 선언부에 static 키워드를 붙여서 static 메서드로 변경해야 합니다.
    
    • ...어..지금 보니까 array을 string으로 받을려고 제가 저 짓을 한거 같은데... 알 수 없는 사용자 2017.8.9 10:41
    • input.txt에서 각각 lat1, lat2, lon1,lon2 같은 값들을 받을려고 하는데 알 수 없는 사용자 2017.8.9 10:42
    • 이것들을 double로 받고 연산한 다음에 마지막에 string array로 봐꾸로 다시 txt파일로 봐꿀려고 합니다... 알 수 없는 사용자 2017.8.9 10:42
    • 전혀 코딩에 반영되어 있지 않지만요.... 알 수 없는 사용자 2017.8.9 10:42
    • 그리고 전체 코드 맞습니다...ㅠㅠ 정말 암울하네요 알 수 없는 사용자 2017.8.9 10:43
    • 말씀하신게 반영된 소스를 다시 올려보세요. 편집요청빌런 2017.8.9 13:47

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)