아래 소스에서


float[] elevation_result; 대신에

float[] elevation_result = new float[] { 2, 1, 3, 1, 3}; 를 넣으면 정상적으로 작동합니다...


/mnt/sdcard안의 파일을 읽어서 elevation_result[i] = (float)(vari.elevation); 로 저장하는 과정에서

문제가 발생한 것 같은데,, 잘 모르겠네여,, 조언부탁드립니다.


=========================소스는 다음과 같습니다=========================

package exam.militarymgrs;


import java.io.*;

import java.util.*;


import android.app.*;

import android.os.*;

import android.app.Activity;

import android.os.Bundle;

import android.widget.*;


public class Draw_LOS extends Activity

{

    Variables vari;    

 //   public void mOnClick(View v){

    java.util.List<String> data1 = new ArrayList<String>();

    java.util.List<String> data2 = new ArrayList<String>();

    java.util.List<String> data3 = new ArrayList<String>();

    java.util.List<String> data4 = new ArrayList<String>();

    java.util.List<String> data5 = new ArrayList<String>();

    java.util.List<String> data6 = new ArrayList<String>();

    java.util.List<String> data7 = new ArrayList<String>();

    java.util.List<String> data8 = new ArrayList<String>();

    


    

    String[] verlabels = new String[] { "Highst", "Mean", "Lowest" };

   String[] horlabels = new String[] { "Left Site", "Right Site"};

   float[] elevation_result;

   //float[] elevation_result = new float[] { 2,1, 3, 1 , 3};

   //public static boolean BAR = true;

     

///finding max&minimum latitude, longitude

int maxLatitude = Math.max((int) vari.final_x, (int)vari.init_x);

int minLatitude = Math.min((int) vari.final_x, (int)vari.init_x);

int maxLongitude = Math.max((int) vari.final_y, (int)vari.init_y);

int minLongitude = Math.min((int) vari.final_y, (int)vari.init_y);

///∞≈≤Ÿ∑Œ «fl≥◊ x, y∏¶

public int currentLatitude = minLatitude;

public int currentLongitude = minLongitude;


public int latitudeCalculation = maxLatitude - minLatitude + 1;

public int longitudeCalculation = maxLongitude - minLongitude + 1;



public double x, y;

@Override

    public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);

    this.mapReading();

    GraphView graphView = new GraphView(this, elevation_result, "Result",horlabels, verlabels, GraphView.LINE);

    setContentView(graphView);

    }


//////////////////////////MAP READING

public void mapReading(){

    int i;

int ix = 0;

int iy = 0;


  for(ix=0;ix<latitudeCalculation;ix++)

{

  //System.out.println(currentLatitude);

  //System.out.println(currentLongitude);

  //System.out.println(latitudeCalculation);

  //System.out.println(longitudeCalculation);

   

      for(iy=0;iy<longitudeCalculation;iy++)

  { 


                    if (currentLatitude == 126 && currentLongitude == 36)

                    {

data1 = readFile("/mnt/sdcard/36x37x233x234.sdf");

//System.out.println("36x37x233x234.sdf");

                        currentLongitude++;

                    } else if (currentLatitude == 127 && currentLongitude == 36)

                    {

data2 = readFile("/mnt/sdcard/36x37x232x233.sdf");

//System.out.println("36x37x232x233.sdf");

currentLongitude++;

                    } else if (currentLatitude == 128 && currentLongitude == 36)

                    {

data3 = readFile("/mnt/sdcard/36x37x231x232.sdf");

//System.out.println("36x37x231x232.sdf");

currentLongitude++;

                    } else if (currentLatitude == 129 && currentLongitude == 36)

                    {

data4 = readFile("/mnt/sdcard/36x37x230x231.sdf");

//System.out.println("36x37x230x231.sdf");

currentLongitude++;

                    } else if (currentLatitude == 126 && currentLongitude == 37)

                    {

data5 = readFile("/mnt/sdcard/37x38x233x234.sdf");

//System.out.println("37x38x233x234.sdf");

currentLongitude++;

                    } else if (currentLatitude == 127 && currentLongitude == 37)

                    {

data6 = readFile("/mnt/sdcard/37x38x232x233.sdf");

//System.out.println("37x38x232x233.sdf");

currentLongitude++;

                    } else if (currentLatitude == 128 && currentLongitude == 37)

                    {

data7 = readFile("/mnt/sdcard/37x38x231x232.sdf");

//System.out.println("37x38x231x232.sdf");

currentLongitude++;

                    } else if (currentLatitude == 129 && currentLongitude == 37)

                    {

data8 = readFile("/mnt/sdcard/37x38x230x231.sdf");

//System.out.println("37x38x230x231.sdf");

currentLongitude++;

                    } 

  }

  currentLatitude++;

}


int rr = (int) (vari.calculation_loop);

    //System.out.println(vari.calculation_loop);

 

for(i=0;i<rr+1;i++)

{

         if (vari.isXbases)

         {

  x = vari.init_x + ((double)i)/1200;

      y = vari.init_y + vari.step*((double)i)/1200;

          

     

          return_elevation(x, y);

          elevation_result[i] = (float)(vari.elevation);

          

  //g.drawLine(i, 100, i, 100+vari.elevation);// draw lines

  //System.out.println(vari.elevation);

  //System.out.println(x);

  //System.out.println(y);

         }

else

{


    x = vari.init_x + Math.abs(1/vari.step*((double)i)/1200);

         

             if(vari.final_y-vari.init_y < 0)

{

                 y = vari.init_y - ((double)i)/1200;

    } else if(vari.final_y-vari.init_y >= 0)

{

    y = vari.init_y + ((double)i)/1200;

}


             return_elevation(x, y);

             elevation_result[i] = (float)(vari.elevation);

    //g.drawLine(i, 100, i, 100+vari.elevation);// draw lines

//System.out.println(vari.elevation);

//System.out.println(x);

    //System.out.println(y);

}//end else

     }//end FOR

}//public void mapReading

    

//////////////////////////////////////

public static ArrayList<String> readFile(String fileName) {

      String line = "";

      ArrayList<String> data = new ArrayList<String>();//consider using ArrayList<int>

      try {

       FileReader fr = new FileReader(fileName);

       BufferedReader br = new BufferedReader(fr);//Can also use a Scanner to read the file

       while((line = br.readLine()) != null) {     

        data.add(line);

       }

      }

      catch(FileNotFoundException fN) {

       fN.printStackTrace();

      }

      catch(IOException e) {

       System.out.println(e);

      }


  return data;

}

////////////////////////////////////////////

public void return_elevation(double Longitude, double Latitude) 

{

//int elevation;

double newLongitude, newLatidude;

newLongitude = Longitude - (int)Longitude;

newLatidude = Latitude - (int)Latitude;

 

       //System.out.println(newLongitude);

       //System.out.println(Latitude);


    int Ky = (int) (Math.round((1200*(newLatidude))))*1200; //æÍ¥¬ ≥—æÓ∞•∂ß 1200¥‹¿ß∑Œ ≥—æÓ∞°æfl«‘

int Kx = (int) Math.round(-1200*(newLongitude)-1);


//System.out.println(Ky+Kx);


        if(  ((int)Latitude) == 36 && ((int)Longitude) == 126)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data1.get(0));

} else

{

vari.elevation = Integer.parseInt(data1.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 36 && ((int)Longitude) == 127)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data2.get(0));

} else

{

vari.elevation = Integer.parseInt(data2.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 36 && ((int)Longitude) == 128)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data3.get(0));

} else

{

vari.elevation = Integer.parseInt(data3.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 36 && ((int)Longitude) == 129)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data4.get(0));

} else

{

vari.elevation = Integer.parseInt(data4.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 37 && ((int)Longitude) == 126)

        {

if ((Ky+Kx) < 0){

vari.elevation = Integer.parseInt(data5.get(0));

} else

{

            vari.elevation = Integer.parseInt(data5.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 37 && ((int)Longitude) == 127)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data6.get(0));

} else

{

vari.elevation = Integer.parseInt(data6.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 37 && ((int)Longitude) == 128)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data7.get(0));

} else

{

vari.elevation = Integer.parseInt(data7.get(Ky+Kx));

}

        } else if (  ((int)Latitude) == 37 && ((int)Longitude) == 129)

        {

if ((Ky+Kx) < 0)

{

vari.elevation = Integer.parseInt(data8.get(0));

} else

{

vari.elevation = Integer.parseInt(data8.get(Ky+Kx));

}

}

}

 //   }//public void mOnClick(View v)

}//don't touch