2016-09-16 149 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

是的其他明智的檢查如何在掃描儀類中設置路徑 –