基本的android:switch语句的语法而不是else-if

unt*_*ted 3 java syntax android if-statement

我正在研究一个Android初学者的教程,这是一个小费计算器.它运行正常,但我想知道如何用switch语句替换else-if语句.并不是说它对于这个程序来说非常重要,但我只是试图围绕语法进行思考.

package com.android.tipcalc;

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

public class tipcalc extends Activity
{

    private EditText txtbillamount;
    private EditText txtpeople;
    private RadioGroup radiopercentage;
    private RadioButton radio15;
    private RadioButton radio18;
    private RadioButton radio20;

    private TextView txtperperson;
    private TextView txttipamount;
    private TextView txttotal;

    private Button btncalculate;
    private Button btnreset;

    private double billamount = 0;
    private double percentage = 0;
    private double numofpeople = 0; 
    private double tipamount = 0;
    private double totaltopay = 0;
    private double perperson = 0; 


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

        initControls();

    }

    private void initControls()
    {
        txtbillamount = (EditText)findViewById(R.id.txtbillamount);
        txtpeople = (EditText)findViewById(R.id.txtpeople);
        radiopercentage = (RadioGroup)findViewById(R.id.radiopercentage);
        radio15 = (RadioButton)findViewById(R.id.radio15);
        radio18 = (RadioButton)findViewById(R.id.radio18);
        radio20 = (RadioButton)findViewById(R.id.radio20);
        txttipamount=(TextView)findViewById(R.id.txttipamount);
        txttotal=(TextView)findViewById(R.id.txttotal);
        txtperperson=(TextView)findViewById(R.id.txtperperson);

        btncalculate = (Button)findViewById(R.id.btncalculate);
        btnreset = (Button)findViewById(R.id.btnreset);

        btncalculate.setOnClickListener(new Button.OnClickListener() {
            public void onClick (View v){ calculate(); }});
        btnreset.setOnClickListener(new Button.OnClickListener() {
            public void onClick (View v){ reset(); }});

    }

    private void calculate()
    {
    billamount=Double.parseDouble(txtbillamount.getText().toString());
    numofpeople=Double.parseDouble(txtpeople.getText().toString());

    if (radio15.isChecked()) {
        percentage = 15.00;
    } else if (radio18.isChecked()) {
        percentage = 18.00;
    } else if (radio20.isChecked()) {
        percentage = 20.00;
    }

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

    txttipamount.setText(Double.toString(tipamount));
    txttotal.setText(Double.toString(totaltopay));
    txtperperson.setText(Double.toString(perperson));        
    }

    private void reset()
    {
    txtbillamount.setText("");
    txtpeople.setText("");
    radiopercentage.clearCheck();
    radiopercentage.check(R.id.radio15);
    txttipamount.setText("...");
    txttotal.setText("...");
    txtperperson.setText("...");
    }
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 5

什么我上面的人说的是正确的,但对于使用switch语句为它的地狱起见,你可以设置OnCheckedChangedListener你的RadioGroup,然后使用一类是这样的:

private class MyCheckedChangedListener implements OnCheckedChangeListener {

@Override
public void onCheckedChanged( RadioGroup group, int checkedId ) {

    switch (checkedId) {
        case R.id.radio15:
            percentage = 15f;
            break;
        case R.id.radio18:
            percentage = 18f;
            break;
        case R.id.radio20:
            percentage = 20f;
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

}