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);