计算RadioButton的得分

时间:2015-05-10 05:36:16

标签: java android oop count

如何计算radiobutton的得分?

我有radio1,radio7,radio8,radio14。每个radiobutton存储在不同的radioGroup,radio1中的radio1,radioGroup2中的radio7,radioGroup3中的radio8。 我尝试使用if语句但效率不高,我尝试使用switch语句但不能计算我的分数

这是我的if声明:

    RadioButton kunci1 = (RadioButton) findViewById(R.id.radio1);
    RadioButton kunci2 = (RadioButton) findViewById(R.id.radio7);
    RadioButton kunci3 = (RadioButton) findViewById(R.id.radio8);
    RadioButton kunci4 = (RadioButton) findViewById(R.id.radio14);

    int score=0;
    if (kunci.isChecked() && kunci2.isChecked() && kunci3.isChecked() && kunci4.isChecked()){
    score = 100;
    } else if ((kunci1.isChecked() && kunci2.isChecked() && kunci3.isChecked())......)
     score=75;

这是我的开关声明(nilai是印尼语分数):

int nilai=25;
    switch(nilai) {
        case R.id.radio1:
            if (kunci1.isChecked())
                nilai++;
        case R.id.radio7:
            if (kunci2.isChecked())
                nilai++;
        case R.id.radio8:
            if (kunci3.isChecked())
                nilai++;
        case R.id.radio14:
            if (kunci4.isChecked())
                nilai++;
        default :
            break;
    }

这是我的布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<RelativeLayout
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="504dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="17dp"
        android:layout_marginTop="18dp"
        android:text="1. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. ITB" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. IPB" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. UPB" />

        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. IPI" />
    </RadioGroup>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup1"
        android:layout_below="@+id/radioGroup1"
        android:layout_marginTop="22dp"
        android:text="2. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2" >

        <RadioButton
            android:id="@+id/radio4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Institut Pertanian Bandung" />

        <RadioButton
            android:id="@+id/radio5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. Institut Pertanian Bali" />

        <RadioButton
            android:id="@+id/radio6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Institut Perbankan Bogor" />

        <RadioButton
            android:id="@+id/radio7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. Institut Pertanian Bogor" />
    </RadioGroup>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup2"
        android:layout_below="@+id/radioGroup2"
        android:layout_marginTop="20dp"
        android:text="3. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_below="@+id/textView3" >

        <RadioButton
            android:id="@+id/radio8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Laksmi Irianti" />

        <RadioButton
            android:id="@+id/radio9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. Henni" />

        <RadioButton
            android:id="@+id/radio10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Yeni" />

        <RadioButton
            android:id="@+id/radio11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. Inna Novianti" />
    </RadioGroup>

     <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup3"
        android:layout_below="@+id/radioGroup3"
        android:layout_marginTop="20dp"
        android:text="4. Can&apos;t fetch from server" />

     <RadioGroup
        android:id="@+id/radioGroup4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView4"
        android:layout_below="@+id/textView4" >

        <RadioButton
            android:id="@+id/radio12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Komunikasi" />

        <RadioButton
            android:id="@+id/radio13"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. PPP" />

        <RadioButton
            android:id="@+id/radio14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Tekom" />

        <RadioButton
            android:id="@+id/radio15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. PKS" />
    </RadioGroup>

     <Button
         android:id="@+id/button1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/radioGroup4"
         android:text="Submit" 
         android:onClick="submit"/>

     <TextView
         android:id="@+id/textView5"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentTop="true"
         android:layout_centerHorizontal="true"
         android:text="Timer" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

你可以做一些事情,比如维护一组单选按钮并迭代它们。

ArrayList<RadioButton> buttons = new ArrayList<>();

buttons.add((RadioButton) findViewById(R.id.radio1));
buttons.add((RadioButton) findViewById(R.id.radio7));
buttons.add((RadioButton) findViewById(R.id.radio8));
buttons.add((RadioButton) findViewById(R.id.radio14));

for(RadioButton button : buttons){
    if (button.isChecked()){
        nilai+= 25;
    }  
}

如果您仍想保留原始按钮,则可以使用三元运算符,但它的可读性会降低:

nilai += kunci.isChecked() ? 25 : 0 +  kunci2.isChecked() ? 25 : 0 + 
kunci3.isChecked() ? 25 : 0 +  kunci4.isChecked() ? 25 : 0 ;

答案 1 :(得分:1)

您的问题比您想象的要容易,您只需要几个连续的独立if语句(或者当然是三元运算符)来更新您的分数,例如

int score=0;
if (kunci1.isChecked()) score += 25;
if (kunci2.isChecked()) score += 25;
if (kunci3.isChecked()) score += 25;
if (kunci4.isChecked()) score += 25;
//...

或单线

int score = 25 * ((kunci1.isChecked() ? 1 : 0) + (kunci2.isChecked() ? 1 : 0) + ...)