java - 在android中选中复选框时如何计算百分比?

标签 java android

<分区>

我有一个问题。我有 25 个复选框,我需要知道选中的复选框数量的百分比。 我的代码如下。当我选中复选框时,出现错误消息/强制关闭应用程序。

p1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (p1.isChecked()){
        palm1=longitude+","+latitude;
        //Toast.makeText(getBaseContext(), palm1, Toast.LENGTH_SHORT).show();
    }else {
        palm1="health";
        //Toast.makeText(getBaseContext(), "uncheck", Toast.LENGTH_SHORT).show();
    }

    percentage();

        }});
public void percentage(){
    Vector<CheckBox> allCheck=new Vector<CheckBox>();

    int counterChecked=0;

    allCheck.add(p1);
    allCheck.add(p2);
    allCheck.add(p3);
    allCheck.add(p4);
    allCheck.add(p5);
    allCheck.add(p6);
    allCheck.add(p7);
    allCheck.add(p8);
    allCheck.add(p9);
    allCheck.add(p10);
    allCheck.add(p11);
    allCheck.add(p12);
    allCheck.add(p13);
    allCheck.add(p14);
    allCheck.add(p15);
    allCheck.add(p16);
    allCheck.add(p17);
    allCheck.add(p18);
    allCheck.add(p19);
    allCheck.add(p20);
    allCheck.add(p21);
    allCheck.add(p22);
    allCheck.add(p23);
    allCheck.add(p24);
    allCheck.add(p25);



    for(int i=0; i<allCheck.size();i++)
           if(allCheck.get(i).isChecked()){
              // str.get(i)=longitude+","+latitude;
           counterChecked++;
           }

    double percent = (counterChecked * 100) / allCheck.size();
    persen=String.format("%.1f", percent+"%");
    kerusakan= Integer.toString(counterChecked);


}

日志猫:

12-02 15:27:02.280: E/AndroidRuntime(311): FATAL EXCEPTION: main
12-02 15:27:02.280: E/AndroidRuntime(311): java.util.IllegalFormatConversionException: f is incompatible with java.lang.String
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.util.Formatter$Transformer.badArgumentType(Formatter.java:1452)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.util.Formatter$Transformer.transformFromFloat(Formatter.java:1923)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.util.Formatter$Transformer.transform(Formatter.java:1421)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.util.Formatter.doFormat(Formatter.java:1082)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.util.Formatter.format(Formatter.java:994)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.lang.String.format(String.java:2254)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.lang.String.format(String.java:2219)
12-02 15:27:02.280: E/AndroidRuntime(311):  at com.kt.MainActivity.percentage(MainActivity.java:672)
12-02 15:27:02.280: E/AndroidRuntime(311):  at com.kt.MainActivity$2.onCheckedChanged(MainActivity.java:121)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.widget.CompoundButton.setChecked(CompoundButton.java:124)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.widget.CompoundButton.toggle(CompoundButton.java:86)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.widget.CompoundButton.performClick(CompoundButton.java:98)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.view.View$PerformClick.run(View.java:8816)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.os.Handler.handleCallback(Handler.java:587)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.os.Looper.loop(Looper.java:123)
12-02 15:27:02.280: E/AndroidRuntime(311):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.lang.reflect.Method.invokeNative(Native Method)
12-02 15:27:02.280: E/AndroidRuntime(311):  at java.lang.reflect.Method.invoke(Method.java:521)
12-02 15:27:02.280: E/AndroidRuntime(311):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-02 15:27:02.280: E/AndroidRuntime(311):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-02 15:27:02.280: E/AndroidRuntime(311):  at dalvik.system.NativeStart.main(Native Method)

最佳答案

查看:

persen=String.format("%.1f", percent+"%");

将其更改为:

persen=String.format("%.1f", percent);

关于java - 在android中选中复选框时如何计算百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037679/

相关文章:

Android 阻止返回到上一个 Activity

Java JFrame 添加带字段的浏览按钮

java - Vaadin JPAContainer : ManytoOne relation with EmbeddedID

java - 是否有独立于平台的方式以编程方式从 zip/jar 中删除文件?

java - 有没有办法重用知识库,而不是通过无状态知识 session 重新插入所有事实?

android - 仅来自网络的 GPS 位置

android - Stack Paints Container,但不是 DecoratedBox

java - 在检查之前评估java中 'for loop'的中间部分

android - 从 ForeignCollection 添加、删除对象

android - 支持夜间模式的最佳方式是什么?