편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2017.08.09

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


    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 변환에 문제가 생긴다고 자꾸 그러네요...
    어떤식으로든 조언, 문제점 지적 해주시면 정말 감사하겠습니다~! ㅠㅠ
    
  • 프로필 김선우님의 편집
    날짜2017.08.09

    JAVA String변환 관련 및 전체적 분석....


    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);  
        }
    }
    

    ...엉망인 코드입니다만 알고리즘은 분석까지 바라지도 않습니다... 최종적으로는 txt파일을 얻고 싶은데 어디선가 string이 꼬인거 같습니다 그냥 틀린게 보일때마다 지적 부탁드립니다...

  • 프로필 알 수 없는 사용자님의 편집
    날짜2017.08.09

    JAVA String변환 관련 및 전체적 분석....


    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);  
    }
    

    }

    ...엉망인 코드입니다만 알고리즘은 분석까지 바라지도 않습니다... 최종적으로는 txt파일을 얻고 싶은데 어디선가 string이 꼬인거 같습니다 그냥 틀린게 보일때마다 지적 부탁드립니다...