【问题标题】:Error in Eclipse: operator is undefined with EditText, doubleEclipse 中的错误:使用 EditText 未定义运算符,双精度
【发布时间】:2014-03-24 05:51:51
【问题描述】:

我正在尝试制作一个简单的小费计算器,并有一个 EditText 文本字段,您可以在其中输入您的总账单金额,然后单击您要在小费中计算的百分比按钮(例如 10%),然后单击该 % 按钮的 onClickListener 将计算提示并将结果放入自身下方的不同 TextView 字段中。

但是,我知道我必须将我的总帐单的 EditText 从一个字符串更改为一个双字节,并包含为此的代码,但是当我尝试将总帐单乘以 10% 的小费时,我仍然得到错误.为什么?

这是我的代码:

package com.example.nonitips;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    public EditText totalBill;
    public double billWithTip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        totalBill = (EditText)findViewById(R.id.totalBill);
    }

    public void onTen (View v) {
        Toast.makeText(this, "Tipping at 10%", Toast.LENGTH_SHORT).show();

        totalBill.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double bill = Double.parseDouble(totalBill.getText().toString());
                bill = (totalBill * 0.10) + totalBill; //Error on this line.
            }
        });

    }

    public void onFifteen (View v) {
        Toast.makeText(this, "Tipping at 15%", Toast.LENGTH_SHORT).show();
    }

    public void onTwenty (View v) {
        Toast.makeText(this, "Tipping at 20%", Toast.LENGTH_SHORT).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

【问题讨论】:

  • 为什么要将edittext乘以double值?有道理吗?
  • EditText 值将是双倍的……只是在我的 xml 文件中,它被设置为 EditText。有没有办法以不同的方式设置它?我认为从 text 到 double 的转换可以正常工作。
  • 账单 = (totalBill * 0.10) + totalBill;这里 totalBill 表示编辑文本。
  • @Lokesh,天哪,非常感谢!这真是一个简单的错误。现在由于某种原因它没有显示在我的 billWithTip 字段中,但这是另一个问题。
  • @Noni A:但是你在哪里使用 billWithTip 值?

标签: android eclipse android-edittext


【解决方案1】:

更改您的 EditText 点击代码:

     totalBill.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        double bill = Double.parseDouble(totalBill.getText().toString());
                        billWithTip= (bill * 0.10) + billWithTip; 

     Toast.makeText(this, "Updated billWithTip"+billWithTip, Toast.LENGTH_SHORT).show();
billWithTip.setText(String.valueOf(billWithTip));
                    }
                });

Double 到 String 的转换示例:

double total = 44; 
String total2 = String.valueOf(total);

【讨论】:

  • 感谢 Lokesh,看起来非常好,但是当我尝试时,billWithTip 字段没有更新为新的账单值。 :( 错误消失了,这是成功的一半。
  • 您想在哪里显示 billWithTip 值??在totalBill Edittext 上??
  • 不,它在一个新字段上,称为 billWithTip(即 Id 名称)。并且 billWithTip 已经被声明为双精度。
  • 谢谢,我想通过说 billWithTip = (bill*0.10) + billWithTip; billWithTip 现在会显示一个数字,但它没有显示任何内容。你认为我错过了什么吗?当用户输入他们的总账单号码(然后通过小费计算)时,它肯定会收到一个数字......
  • 谢谢。抱歉,我为此工作了 10 个小时,筋疲力尽,谷歌搜索会发现很多东西需要筛选,但我认为这有帮助。
【解决方案2】:

您正在尝试将多个 EditText 与 double 值。使用以下代码。

totalBill.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double bill = Double.parseDouble(totalBill.getText().toString());
                billWithTip= (bill * 0.10) + billWithTip; 
            }
        });

【讨论】:

  • 谢谢Jitesh,虽然这个答案是上面的一个重复......但我可以问一下,什么是多重EditText?我想我只是从我拖过来的一个简单的纯文本创建了我的 EditText 小部件。可以吗?
  • 对不起,我的错误是乘法。
  • 感谢您的努力。 :)
【解决方案3】:
        try this one..
        totalBill.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                     //   double bill = Double.parseDouble(totalBill.getText().toString());
                      //  bill = (totalBill * 0.10) + totalBill; //Error on this line.



    try {
    String bills= totalBill.getText().toString();
  Double protein = Double.parseDouble(bills); // Make use of autoboxing.It's also easier to read.
    } catch (NumberFormatException e) {
      // p did not contain a valid double
    }

        if(protein == null || protein.isEmpty()) {

          bill = 0.0;

        } else {

          bills= Double.parseDouble(noKids.getText().toString());
        Double protein = Double.parseDouble(bills);
          bill = (protein * 0.10) + protein ;
        }
                    }
                });

    thank you..

【讨论】:

    【解决方案4】:

    试试这个

    totalBill.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double bill = Double.parseDouble(totalBill.getText().toString());
                bill = (bill  * 0.10) + bill ); 
            }
        });
    

    【讨论】:

    • 谢谢 Nand,我猜你和 Lokesh 确实是同时发帖的。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2020-09-24
    • 2013-07-27
    • 2013-06-05
    相关资源
    最近更新 更多