2016-09-16 104 views
0

我想从先前指定的文件夹中读取保存在.txt文件中的double类型的数据。我已经实现了以下代码来读取数据,然后将它们放入一个名为savg1的double类型的数组中。当我运行我的应用程序时,它会崩溃并且应用程序停止。我试着逐步调试应用程序,发现当代码到达savg1 [i] = Double.parseDouble(str)时发生崩溃。从Android中的文本文件读取类型double的数据

public void filereader() 
{ 

    InputStream is=this.getResources().openRawResource(R.raw.nums); 
    BufferedReader br=new BufferedReader(new InputStreamReader(is)); 
    String str=null; 
    int i=0; 
    try 
    { 
     if (is !=null) 
     { 
      str=br.readLine(); 
      while (str != null) { 
       savg1[i] = Double.parseDouble(str); 
       i++; 
       str=br.readLine(); 
      } 
      is.close(); 
      br.close(); 
     } 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

} 

我是Android开发新手,所以请原谅我的基本问题。任何人都可以指导我如何解决这个问题?

+0

一显而易见的原因是数组是小的,你得到的索引超出了绑定异常 – Selvin

+0

我的数组长度是1000000,我的文本文件数是1000000,我不认为这是问题所在。 –

+0

你得到的错误是什么? – Guenther

回答

1

使用以下代码从您的文件中读取数据。注意,在这个方法中,每个号码应该是一个独立的行:

double svg1[] = new double[10]; 

    try { 
     InputStream is = getResources().openRawResource(R.raw.data); 
     DataInputStream dis = new DataInputStream(is); 
     while (dis.available() > 0) { 
      String test = dis.readLine(); 
      double a = Double.parseDouble(test); 
     } 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
+0

谢谢亲爱的ehsan,它工作。 –

0

您可以使用文件扫描仪读取保存在作为波纹管一个文本文件,double类型的数据:

public void fileReader(){ 

    Scanner scan; 
    File file = new File("resources\\scannertester\\data.txt"); 
    int idx = 0; 
    try { 
     scan = new Scanner(file); 
     while(scan.hasNextDouble()) 
      savg1[idx++] = scan.nextDouble(); 
    } catch (FileNotFoundException error) { 
     error.printStackTrace(); 
    } 
    scan.close(); 
} 
+0

谢谢,但我该如何设置文件路径以及我应该放置文件的位置?这是真的吗? “C:\ Users \ Hanieh \ Desktop \ nums.txt: –

+0

是的其他明智的检查如何在扫描仪类中设置路径 –