我有问题。我有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);
}
Log cat:
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)
答案 0 :(得分:1)
退房:
persen=String.format("%.1f", percent+"%");
将其更改为:
persen=String.format("%.1f", percent);