尝试将 TextField 值乘以双精度值

Trying to multiply a TextField value by a double value

我正在尝试获取 inputEditText 的值并将其乘以 convertNum 的值。

我收到的错误是:运算符“*”无法应用于 'android.widget.EditText'、'double'

我认为我需要将 inputEditText 的值转换为数字,但我不确定。任何帮助,将不胜感激。这是我的代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Declare variables
    final Button calculateButton = (Button) findViewById(R.id.button);
    final TextView resultTextView = (TextView) findViewById(R.id.textView2);
    final TextView resultnumTextView = (TextView) findViewById(R.id.textView3);
    final EditText inputEditText = (EditText) findViewById(R.id.editText);
    final double convertNum = 0.125;

    // Set resultTextView to be invisible on app start
    resultTextView.setVisibility(View.INVISIBLE);

    // When calculate button is pressed: Set resultTextView to visible and show result
    calculateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            resultTextView.setVisibility(View.VISIBLE);
            resultnumTextView.setText(inputEditText * convertNum);

        }
    });
}

inputEditText 是一个 EditText,一个用于编写文本的小部件。您需要提取键入的文本并转换为浮点数。

inputEditText.getText().toString() 

会给你一个包含输入文本的字符串。然后使用包装器 class Float 转换成数字

 String s = inputEditText.getText().toString();
 Float f= Float.parseFloat(s);

如你所见here

而不是这个:

resultnumTextView.setText(inputEditText * convertNum);

这样做:

resultnumTextView.setText(Double.parseDouble(inputEditText.getText().toString()) * convertNum);

当您尝试将 EditText(它是一个 View 实例)和 double(它是一个数字)相乘时出现错误。

最简单的解决方法是更换

resultnumTextView.setText(inputEditText * convertNum);

resultnumTextView.setText(String.valueOf(
    Float.valueOf(inputEditText.getText().toString()) * convertNum
));
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Declare variables
    final Button calculateButton = (Button) findViewById(R.id.button);
    final TextView resultTextView = (TextView) findViewById(R.id.textView2);
    final TextView resultnumTextView = (TextView) findViewById(R.id.textView3);
    final EditText inputEditText = (EditText) findViewById(R.id.editText);
    final double convertNum = 0.125;

    // Set resultTextView to be invisible on app start
    resultTextView.setVisibility(View.INVISIBLE);

    // When calculate button is pressed: Set resultTextView to visible and show result
    calculateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String valueFromInput = inputEditText.getText().toString();
            try{
               double valueToDouble = Double.parseDouble(valueFromInput);
               double result = convertNum * valueToDouble;
               resultnumTextView.setText(result+"");
               resultTextView.setVisibility(View.VISIBLE);
            }catch(Exception e){
               // print the exception.
            }
        }
    });
}