读取文件中的数字格式异常,其中包含arraylists

时间:2013-04-15 21:20:00

标签: android

我在标题中收到此错误。 我从编辑文本字段创建2个arraylists并将它们保存在xls文件中。

保存:

File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard, "MyFiles");
directory.mkdirs();            
File file = new File(directory, filename);


FileOutputStream fos;


try {
   fos = new FileOutputStream(file);
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
   bw.write(mydata+"\t"+myweight+"\n");
   bw.flush();
   bw.close();
    } catch (IOException e2) {
       e2.printStackTrace();
        }//catch

并加载:

       File sdCard = Environment.getExternalStorageDirectory();
        File directory = new File (sdCard, "MyFiles");
        File file = new File(directory, filename);

        String s;
        FileInputStream fis;

       try {
          fis = new FileInputStream(file);
             BufferedReader br = new BufferedReader(new InputStreamReader(fis));
             do {
                 s = br.readLine();
                 if (s != null)
                     {
                     data.add(Double.parseDouble(s));
                     weight.add(Double.parseDouble(s));
                     }
                 } while (s != null);
           } catch (IOException e) {
              e.printStackTrace();
               }
    }

它显示了行“data.add(Double.parseDouble(s));”中的数字格式异常。

另外,我输入例如2个字段1,10和2,20,文件包含一个单元格 [1.0,2.0] [1.0,2.0]

其他数据?如何将数据放入2列?

1 个答案:

答案 0 :(得分:1)

保存数据的代码仅存储包含两个数字分隔的文本行。当你的代码读取文件时,你会读取整行,试图解析文本,这显然是不可解析的(有一个标签)。

你应该迭代你的数组写每一行。然后,read方法应该拆分readed字符串并分别解析每个子字符串。

问候。

让我们试着解释一下我会做什么[未编译]:

File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard, "MyFiles");
directory.mkdirs();            
File file = new File(directory, filename);


FileOutputStream fos;

try {
    fos = new FileOutputStream(file);
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
    //I assume mydata and myweight are both List<Double>... with same size
    for(int i = 0; i < mydata.size(); i++){
        bw.write(mydata.get(i)+"\t"+myweight.get(i)+"\n");
    }        
    bw.flush();
    bw.close();
} catch (IOException e2) {
    e2.printStackTrace();
}//catch

...

File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard, "MyFiles");
File file = new File(directory, filename);

String s;
FileInputStream fis;

try {
    fis = new FileInputStream(file);
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    do {
        s = br.readLine();
        if (s != null)
        {
            String[] splitLine = s.split("\\t");
            data.add(Double.parseDouble(splitLine[0]));
            weight.add(Double.parseDouble(splitLine[1]));
        }
    } while (s != null);
} catch (IOException e) {
     e.printStackTrace();
}
相关问题