0

我是 Android 编程的新手,我正在尝试汇总 datepicker 中的所有 char 元素,但没有成功。

这是代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        final TextView tv = (TextView)findViewById(R.id.textView1);
        DatePicker dp = (DatePicker)findViewById(R.id.datePicker1);
        final int day = dp.getDayOfMonth();
        final int month = dp.getMonth();
        final int year = dp.getYear();

        Button b = (Button)findViewById(R.id.button1);

        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int num = 0;
                String sdate = String.valueOf(month) + String.valueOf(day) + String.valueOf(year);

                char[] c = sdate.toCharArray();


                for(int i=0; i<c.length;i++)
                {
                    num+=Integer.valueOf(c[i]);
                }

                tv.setText(String.valueOf(num));
            }
        });

    }

输出为:355。

实际总和必须为20,我想在 2013 年 6 月 17 日这样求和, 所以示例 1+7+0+6+2+0+1+3 = 20

4

3 回答 3

3

use Character.getNumericValue

for(int i=0; i<c.length;i++) {
     num+=Character.getNumericValue(c[i]);
}
于 2013-06-17T12:12:46.870 回答
1

从 Integer.valueOf() 更改为 Character.valueOf() Integer.valueOf(int) 采用整数,您的 char 被强制转换为 int 并给出 ASCII 值。

于 2013-06-17T12:16:29.037 回答
1

这将起作用

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    final TextView tv = (TextView)findViewById(R.id.textView1);
    DatePicker dp = (DatePicker)findViewById(R.id.datePicker1);
    final int day = dp.getDayOfMonth();
    final int month = dp.getMonth();
    final int year = dp.getYear();

    Button b = (Button)findViewById(R.id.button1);

    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int num = 0;
            String sdate = String.valueOf(month) + String.valueOf(day) + String.valueOf(year);

            int[] ee=new int[sdate.length()];
            String[] dd=new String[sdate.length()];
            for(int i=0;i<sdate.length();i++){
            dd[i]=sdate.substring(i,i+1);
            ee[i]=Integer.parseInt(dd[i]);
            num+=ee[i];

    }        

            tv.setText(String.valueOf(num));
        }
    });

}
于 2013-06-17T12:35:15.807 回答