Android Studio TextView将数字显示为字母

时间:2016-08-26 13:47:20

标签: android number-formatting

我遇到TextView显示字母而不是数字的问题。

我正在尝试制作转换器应用。

这是我的代码:

package com.rickhuisman.converter;

import android.icu.text.DecimalFormat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

public class LengthActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_length);
    }

    public void onClickConvertLength(View view) {
        // variables
        Spinner spinner1 = (Spinner)findViewById(R.id.spinner1Length);
        Spinner spinner2 = (Spinner)findViewById(R.id.spinner2Length);
        Button button = (Button)findViewById(R.id.convertButtonLength);
        // spinner 1
        String spinner1Value = String.valueOf(spinner1.getSelectedItem());
        // spinner 2
        String spinner2Value = String.valueOf(spinner2.getSelectedItem());
        EditText inputChecker = (EditText)findViewById(R.id.InputLength);
        TextView showText = (TextView)findViewById(R.id.showTextLength);

        String inputCheckerText = inputChecker.getText().toString();
        EditText input = (EditText)findViewById(R.id.InputLength);

        // If input == 0
        if(inputCheckerText.equals("")) {
            inputCheckerLength();
        }


        // Millimeters && Millimeters
        else if(spinner1Value.equals("Millimeters") && spinner2Value.equals("Millimeters")) {
            // Get the input
            Double formule = new Double(input.getText().toString());

            methodLength(formule);
        }

        // Millimeters && Centimeters
        else if(spinner1Value.equals("Millimeters") && spinner2Value.equals("Centimeters")) {
            // Get the input
            Double formule = new Double(input.getText().toString());

            methodLength(formule);
        }
    }

    // If the input == 0
    public void inputCheckerLength() {
        TextView showText = (TextView)findViewById(R.id.showTextLength);
        CharSequence toastText = "Nothing to convert!";
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(this, toastText, duration);
        toast.show();
    }

    // The method
    public void methodLength(double formule) {
        TextView showText = (TextView)findViewById(R.id.showTextLength);

        showText.setText(Double.valueOf(formule).toString());
    }
}

代码图片:Code

问题是,如果我在EditText中添加了很多数字,TextView会显示字母,有没有办法让TextView显示整数而不是字母?

问题图片:Image

抱歉英文不好,谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您使用Double.toString()方法输出double值,该值使用scientific notation格式。

如果您想显示普通数字,可以改为使用String.format()

showText.setText(String.format("%.0f", formule));

如果您想显示小数,可以使用例如%.2f表示两位小数,而不是%.0f