Operater' *'无法应用于' android.widget.RadioButton',' int'

时间:2018-04-30 17:49:36

标签: android operator-keyword

Operater' *'无法应用于' android.widget.RadioButton',' int'

我正在创建一个应用程序,该应用程序使用具有20个纸张限制的单选按钮来打印纸张。 我不确定为什么我会收到此错误,因为我正在抓取从我的EditText获取信息。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DecimalFormat;

public class MainActivity extends Activity {
double totalcost;
double price1 = 0.15;
double price2 = 0.45;
double price3 = 0.80;
int prints;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setLogo(R.mipmap.ic_launcher);
    getActionBar().setDisplayUseLogoEnabled(true);
    final EditText prints =(EditText)findViewById(R.id.noprint);
    final RadioButton price1 = (RadioButton)findViewById(R.id.rad1);
    final RadioButton price2 = (RadioButton)findViewById(R.id.rad2);
    final RadioButton price3 = (RadioButton)findViewById(R.id.rad3);
    final TextView totalcost =(TextView)findViewById(R.id.cost);
    Button calculate =(Button)findViewById(R.id.btn1);
    calculate.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            String prints = noprint.getText().toString();
            int prints = Integer.parseInt(noprint);
            DecimalFormat tenth = new DecimalFormat("$##.##");

            if (price1.isChecked()) {
                if (prints <= 20) {
                    totalcost = price1 * prints;

                } else {
                    Toast.makeText(MainActivity.this, "Number of prints must be less than 20", Toast.LENGTH_LONG).show();
                }

            }

1 个答案:

答案 0 :(得分:1)

查看您的程序,您有一个命名问题。在类级别,您可以定义属性

double price1 = 0.15;

但在方法onCreate(...)中您还定义了

final RadioButton price1 = (RadioButton)findViewById(R.id.rad1);

有效隐藏属性。因此,当你写

totalcost = price1 * prints;

您命令java将RadioButton乘以int。由于此二进制运算符(*(RadioButton, int))在Java中未定义,因此会出现编译器错误。您的意图可能是使用属性price1。快速解决方法是通过this引用显式使用该属性:

totalcost = this.price1 * prints;

更清洁的修复方法是重命名变量,这样就不会使用局部变量隐藏属性。