我在标题中收到此错误。 我从编辑文本字段创建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列?
答案 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();
}