2013-07-13 2 views
0

Я начинаю программист для Android, и я пытаюсь сделать калькулятор чаевых. Это код, который я написал до сих пор. У меня есть два вопроса. Во-первых, почему не работает моя кнопка расчета? И seccond, если этот код написан чистым? Или я ошибаюсь?Basic Tip Calculator Android Java

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

public class Fooi extends Activity implements OnClickListener { 
    EditText etBill, etPers, etPerc; 
    TextView tvTotal, tvTip, tvPerson; 
    Button bCalc, bReset; 

    double billamount = 0; 
    double percentage = 0; 
    double persons = 0; 
    double tipamount = 0; 
    double totaltopay = 0; 
    double perperson = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fooi); 

     Controls(); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()) { 
     case R.id.bCalculate: 
      if (billamount == 0 | percentage == 0 | persons == 0) { 
       // toast text 
      } else { 
       Calculate(); 
      } 
      break; 
     case R.id.bReset: 
      etBill.setText(""); 
      etPerc.setText(""); 
      etPers.setText(""); 
      break; 
     } 
    } 

    private void Calculate() { 
     billamount = Double.parseDouble(etBill.getText().toString()); 
     percentage = Double.parseDouble(etPerc.getText().toString()); 
     persons = Double.parseDouble(etPers.getText().toString()); 

     tipamount = (billamount * percentage)/100; 
     totaltopay = billamount + tipamount; 
     perperson = totaltopay/persons; 

     tvTip.setText(Double.toString(tipamount)); 
     tvTotal.setText(Double.toString(totaltopay)); 
     tvPerson.setText(Double.toString(perperson)); 
    } 

    private void Controls() { 
     bCalc = (Button) findViewById(R.id.bCalculate); 
     bReset = (Button) findViewById(R.id.bReset); 
     bCalc.setOnClickListener(this); 
     bReset.setOnClickListener(this); 

     tvTotal = (TextView) findViewById(R.id.tvTotal); 
     tvTip = (TextView) findViewById(R.id.tvBill); 
     tvPerson = (TextView) findViewById(R.id.tvPerPerson); 

     etBill = (EditText) findViewById(R.id.etBill); 
     etPerc = (EditText) findViewById(R.id.etPercentage); 
     etPers = (EditText) findViewById(R.id.etPerson); 
    } 
} 

Также об этой строке кода я не уверен. if (billamount == 0 | percentage == 0 | persons == 0) { // toast text Я хочу, чтобы он вычислялся только при заполнении трех EditTexts. Может ли кто-нибудь сказать мне, если я ошибаюсь?

Спасибо заранее!

+0

Ваш код не плох, если вы исправите свой код в соответствии с ответом IncrediApp, потому что это простой пример. Я советую вам следовать правилам кодирования java. Имена методов начинаются с строчных букв. –

ответ

0

Код написан отлично, для 2 thinggs исключением: 1) Ваша, если пункт

if (billamount == 0 | percentage == 0 | persons == 0) 

в «ИЛИ» между условиями, двойные трубы и ни одна труба, так:

if (billamount == 0 || percentage == 0 || persons == 0) 

2) Вы не получаете значение от editTexts до расчета ... Переместить эти строки (и добавить пустые чеки) до начала дела вашего OnClick на кнопке Calculate:

billamount = Double.parseDouble(etBill.getText().toString()); 
percentage = Double.parseDouble(etPerc.getText().toString()); 
persons = Double.parseDouble(etPers.getText().toString()); 
+0

Спасибо! Это разрешило почти все проблемы. Несколько, чтобы разобраться, но я думаю, что доберусь туда – Wannabe