JAVA:Double.parseDouble+;Double.parseDouble=字符串
我的程序中存在以下问题: 当我这样做时:JAVA:Double.parseDouble+;Double.parseDouble=字符串,java,android,Java,Android,我的程序中存在以下问题: 当我这样做时: double a = Double.parseDouble(zero); double b = Double.parseDouble(data); double c = a+b; String d = Double.toString(c); 它返回一个字符串。例如,我在a中有0.0,在b中有4.0,它返回0.04.0 有人能给我解释一下为什么以及我应该做什么吗 编辑:这是我的代码: private void WriteMedia(String data
double a = Double.parseDouble(zero);
double b = Double.parseDouble(data);
double c = a+b;
String d = Double.toString(c);
它返回一个字符串。例如,我在a
中有0.0,在b
中有4.0,它返回0.04.0
有人能给我解释一下为什么以及我应该做什么吗
编辑:这是我的代码:
private void WriteMedia(String data) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("writemedia.txt", Context.MODE_PRIVATE));
String zero;
if(ReadMedia().isEmpty() == true)
{
zero = "0.0";
outputStreamWriter.write(zero);
}
else {zero = ReadMedia();}
double a = Double.parseDouble(zero);
double b = Double.parseDouble(data);
double c = a+b;
String d = Double.toString(c);
outputStreamWriter.write(d);
outputStreamWriter.close();
} catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
private String ReadMedia() {
String ret = "";
try {
InputStream inputStream = openFileInput("writemedia.txt");
if (inputStream != null) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ((receiveString = bufferedReader.readLine()) != null) {
stringBuilder.append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}
} catch (FileNotFoundException e) {
Log.e("login activity", "File not found: " + e.toString());
} catch (IOException e) {
Log.e("login activity", "Can not read file: " + e.toString());
}
return ret;
}
private void writeToFile(String data) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("estrela.txt", Context.MODE_PRIVATE));
outputStreamWriter.write(data);
outputStreamWriter.close();
WriteMedia(data);
} catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
private String readFromFile() {
String ret = "";
try {
InputStream inputStream = openFileInput("estrela.txt");
if (inputStream != null) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ((receiveString = bufferedReader.readLine()) != null) {
stringBuilder.append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}
} catch (FileNotFoundException e) {
Log.e("login activity", "File not found: " + e.toString());
} catch (IOException e) {
Log.e("login activity", "Can not read file: " + e.toString());
}
WriteMedia(ret);
return ret;
}
数据是一个评级条,当我启动应用程序时,零是“0”,它应该将评级条保存为“增量”(不知道英文单词)。我原以为这很容易,但因为这对我来说就像一个bug,所以我将把标签放在android studio上
下面是我调用该方法的地方:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rating = ratingbar.getRating();
writeToFile(Double.toString(rating));
writeMyArray(Double.parseDouble(readFromFile()));
writeMyArray(ratingbar.getRating());
button.setText(getText(R.string.obrigado) + "!" + readFromFile() + " " + media(arraydays) + " " + ReadMedia());
}
});
它同时返回“0.0”和分级栏,例如:“0.05.0”您的问题与类型无关(您猜测的除外),也不在您最初发布的代码中
相反,您只需将2个数字写入输出流。以下代码写入0.0
:
if(ReadMedia().isEmpty() == true)
{
zero = "0.0";
outputStreamWriter.write(zero);
}
除此之外,以下代码还编写了您实际需要的结果:
见回报。计算给了我一个字符串,将两个值放在一起,就像我在问题中显示的那样。如果你不明白这个问题,不要投反对票。然后展示你所说的代码。。。这不是我问马斯托夫的原因。它不应该这样做,所以我来到stackoverflow,我得到的是反对票。@AntónioPaulo这并不像你说的那样…d=“4.0”
不是“0.04.0”
@AntónioPaulo:它不应该这样做,我确信它不会。您没有提供与您的问题实际相关的代码。你一定在做一些不同的事情。但是c是a+b,所以把它改成数字,1+2=3,所以c,转换成字符串(d),无论如何都是3。如果我有数字3,当我转换为字符串时不能转换为“1”+“2”。是的,并且c
中的结果是正确的!但是:您看到的不是c
中的内容,而是输出流中的内容。输出流包含“0.0”和之后的真实结果。@mastov我没有仔细查看他对问题的更新。相反,我回答了一些我认为他可能面临的问题。我的错。谢谢你的指点。那我怎么能在输出流中加一个零呢?@AntónioPaulo:我不确定你到底想达到什么目的。但是我猜第一个outputStreamWriter.write(零)
是多余的,或者整个第二个代码块应该在else
分支的花括号内。
double a = Double.parseDouble(zero);
double b = Double.parseDouble(data);
double c = a+b;
String d = Double.toString(c);
outputStreamWriter.write(d);