2012-10-30 86 views
1

我想做一个简单的计算器,倍数。我已经完成了大部分工作,但我一直得到相同的错误:运算符*未定义为参数类型Double,EditText。运营商*是undefined

我搜索了其他人提出的问题,但唯一简单的问题处理的不是双打。有谁知道如何修理它?

package com.deitel.multiplicationtables; 

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

//Implements the listener for an onclick event (implements View.onClickListener) 
public abstract class Main extends Activity implements View.OnClickListener{ 
    // creates a button 
    private Button one, two, three, four, five, six, seven, eight, nine; 

    // Called when the activity is first created. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //assigns the resource id of 1 - 9 to each button. 
     one = (Button) findViewById(R.id.button1); 
     two = (Button) findViewById(R.id.button2); 
     three = (Button) findViewById(R.id.button3); 
     four = (Button) findViewById(R.id.button4); 
     five = (Button) findViewById(R.id.button5); 
     six = (Button) findViewById(R.id.button6); 
     seven = (Button) findViewById(R.id.button7); 
     eight = (Button) findViewById(R.id.button8); 
     nine = (Button) findViewById(R.id.button9); 

     //Adds the buttons to the onclicklistener 
     one.setOnClickListener(this); 
     two.setOnClickListener(this); 
     three.setOnClickListener(this); 
     four.setOnClickListener(this); 
     five.setOnClickListener(this); 
     six.setOnClickListener(this); 
     seven.setOnClickListener(this); 
     eight.setOnClickListener(this); 
     nine.setOnClickListener(this); 

    } 

    //creates a method (or action) for when the button is clicked. 
    public void onclick(View view) 
    { 
     //Makes a variable for the entered number 
     Double amount; 
     Double product; 
     Double variable; 

     // constants 
     final double one = 1; 
     final double two = 2; 
     final double three = 3; 


     if (view.getId() == R.id.button1) 
     { 
      variable = one; 
     } 
     if (view.getId() == R.id.button2) 
     { 
      variable = two; 
     } 
     if (view.getId()== R.id.button3) 
     { 
      variable = three; 
     } 




     //creates an editext and assigns the resource id of the xml edittext. 
     EditText number = (EditText)findViewById(R.id.editText1); 



     //Receives the input from the edittext, converts it to a double (number). 
     amount = Double.parseDouble(number.getText().toString()); 
     //Calculates the product 
     product = variable * number; 


     //Creates a textview object, assigns the xml r.id, and then changes the text to report the amount. 
     TextView t = (TextView)findViewById(R.id.textView2); 
      t.setText("Your product is: " + product); 

    } 



} 
+1

需要说的是:拥有“一个”,“二个”和“三个”的“常量”比拥有神奇数字还要糟糕。它打开了像“最后一双二十五”这样搞砸的大门 - 如果那是你的意图,那么美德可能会怜悯你的灵魂。 – cHao

回答

6
EditText number = (EditText)findViewById(R.id.editText1); 


product = variable * number; 

numberEditText类型。您不能在EditText上申请*并加倍。

您的产品计算应该是:

product = variable * amount; 

amount是你EditText

+2

使用变量号来保存一个字符串令人困惑。 –

3

您已转换的文本到一个名为amount价值得到了价值,你却已经忘记使用它。

线

product = variable * number; 

应该

product = variable * amount; 

这应该可以解决这个问题。

3
//creates an editext and assigns the resource id of the xml edittext. 
     EditText number = (EditText)findViewById(R.id.editText1); 

     //Calculates the product 
     product = variable * number; 

您要乘以一个double (variable)EditText (number)类型,从而为您的局部变量错误Error

编辑:

local variables没有得到他们的default值,你必须initialize他们之前,你在一个方法内使用它们

public void onclick(View view) 
    { 
     //Makes a variable for the entered number 
     Double amount=0.0; //initialize this 
     Double product=0.0;//initialize this 
     Double variable=0.0;//initialize this 
+0

谢谢,我已经改变了,但它仍然无法正常工作。它说“局部变量,变量可能没有被初始化。” – Lucreacia

+0

@LucianCat checkmy编辑 – PermGenError

+0

感谢您的帮助! – Lucreacia