Java新手,遇到名称/变量引用的问题

时间:2017-02-22 02:48:01

标签: java android android-studio

我现在用这个网站搜索两个学期的特定错误。我知道我提出的问题比我在本网站上搜索/阅读的大多数内容更广泛和基本,但这是我在教室外转向获取信息的唯一地方。

现在我正在使用Android Studio处理简单的Photo Calculator手机应用程序。它有3个单选按钮,每个按钮分配一个特定值。我知道我如何引用每个按钮并尝试触发计算有问题。

目前的一些错误:

    Cannot resolve method'getText()'
    Operator '<' cannot be applied to 'android.widget.editText','int'
    Operator "*" cannot be applied to 'double', 'andriod.widget.EditText'

以下是代码:

        package com.example.squirreloverlord.ccarringtonphonephotoprint;

    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.RadioButton;
    import android.widget.TextView;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {
    double small = 19;
    double medium = 49;
    double large = 79;
    double Result;
    double inputUser;
    double Number;


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

    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setLogo(R.mipmap.ic_launcher);
    getSupportActionBar().setDisplayUseLogoEnabled(true);

        final EditText inputUser = (EditText)     findViewById(R.id.editTextNumber);
        final RadioButton radioButton4x6 = (RadioButton)     findViewById(R.id.radioButton4x6);
        final RadioButton radioButton5x7 = (RadioButton) findViewById(R.id.radioButton5x7);
        final RadioButton radioButton8x10  = (RadioButton)findViewById(R.id.radioButton8x10);
        final TextView Result = (TextView) findViewById(R.id.textViewResult);
        Button Calculate = (Button) findViewById(R.id.buttonCalculate);

        Calculate.setOnClickListener(new View.OnClickListener()  {
            @Override
            public void onClick(View v)  {
                inputUser=Double.parseDouble(Number.getText( ).toString(  ));
                DecimalFormat tenth = new DecimalFormat("#.#");

                if(radioButton4x6.isChecked( ))   {
                    if (inputUser <50) {
                        Number = small * inputUser;
                        Result.setText(tenth.format(Result) + " is your total cost!");

                    } else {
                        Toast.makeText(MainActivity.this,"Please enter a value less than 50", Toast.LENGTH_LONG).show();

                    }
                }
                if (radioButton5x7.isChecked( ))  {
                    if (inputUser <50) {
                        Number = medium * inputUser;
                        Result.setText(tenth.format(Result) + " is your total cost!");
                    }  else  {
                        Toast.makeText(MainActivity.this,"Please enter a value less than 50", Toast.LENGTH_LONG).show();
                    }
                }
                if (radioButton8x10.isChecked()) {
                    if (inputUser <50) {
                        Number = large * inputUser;
                        Result.setText(tenth.format(Result) + " is your total cost!");

                    }  else {
                        Toast.makeText(MainActivity.this,"Please enter a value less than 50", Toast.LENGTH_LONG).show();
                    }
                }
            }
        });

    }
}

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

我认为您应该像这样更改变量:

double inputUser;

final EditText inputUser = (EditText) findViewById(R.id.editTextNumber);

inputUser会对这段代码感到厌烦

inputUser=Double.parseDouble(Number.getText( ).toString(  ));

如果我是你,我将改变这样:

final EditText editUser= (EditText) findViewById(R.id.editTextNumber);

editUser=Double.parseDouble(editUser.getText( ).toString(  ));

然后就像代码editUser <50一样,它将获得值

希望它有所帮助。

根据你的双重打印,改变如下:

prints=Double.parseDouble(editUser.getText( ).toString(  ));

那么你可以这样使用:

if (prints<50)

答案 1 :(得分:0)

更确切地说:

  1.   

    无法解决方法&#39; getText()&#39;

  2. 错误是因为在你有一个班级Number之后你将你的双倍调用为java.lang.Number。因此将其重命名为number

    1.   

      Double.parseDouble(Number.getText()。toString());

    2. 请仔细阅读你在这里尝试做什么 - 得到双倍的字符串并将其解析为双倍......这样做的原因是什么?

      1.   

        运营商&#39;&lt;&#39;无法应用于&#39; android.widget.editText&#39;,&#39; int&#39;

             

        运营商&#34; *&#34;不能应用于&#39; double&#39;,&#39; andriod.widget.EditText&#39;

      2. 您将变量inputUser定义为类EditText的对象,然后尝试将原始数学运算符<*应用于它。

        幸运的是,Java是严格类型化的语言,不能这样做。 我不熟悉android软件包。但也许EditText有类似getText()的东西,您可以将其解析为double,然后进行比较或乘法...