JAVA:Double.parseDouble + Double.parseDouble = String

Ant*_*ulo -2 java android

我的程序中有这个问题:当我这样做时:

double a = Double.parseDouble(zero);
double b = Double.parseDouble(data);
double c = a+b;
String d = Double.toString(c);
Run Code Online (Sandbox Code Playgroud)

它给我一个回报String.例如,我有0.0英寸a和4.0英寸b,它返回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;
}
Run Code Online (Sandbox Code Playgroud)

数据是一个评级栏,当我启动应用程序时零为"0",它应该将评级栏保存为"增量"(不知道英文单词).我认为这很容易,但因为就像我只是为了一个bug,我会把标签安卓工作室.

这是我调用方法的地方:

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

        }
    });
Run Code Online (Sandbox Code Playgroud)

它将"0.0"和评级栏一起返回给我,例如:"0.05.0"

mas*_*tov 5

你的问题是相关类型(而不是你猜),它是不是在你最初发布的代码.

相反,您只是在输出流中写入2个数字.以下代码写道0.0:

    if(ReadMedia().isEmpty() == true)
    {
        zero = "0.0";
        outputStreamWriter.write(zero);
    }
Run Code Online (Sandbox Code Playgroud)

而且,除此之外,以下代码会写出您真正想要的结果:

    double a = Double.parseDouble(zero);
    double b = Double.parseDouble(data);
    double c = a+b;
    String d = Double.toString(c);
    outputStreamWriter.write(d);
Run Code Online (Sandbox Code Playgroud)