多次微调caclulation结果不准确 [英] multiple spinner caclulation results are not accurate

查看:176
本文介绍了多次微调caclulation结果不准确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新android开发我有一个calulator页,其中我需要做两个微调选择的选项计算量小。我已经使用开关的情况下得到的结果。

所有的UI来了预期,但是当我使用计算按钮导致不能按预期和随机的。

任何人都可以点我想提出什么错?

活动

 公共类Calculatorrecon扩展活动实现OnItemSelectedListener {    双大,速度快,RESULT1,结果2;
    按钮but1;
    TextView的结果;
    微调shoesize,shoespeed;
    的String [] =大小{选择尺寸,百CM,80 CM,
            70后CM,六十CM,的50 CM,40. CM,30. CM,};
    的String []速度= {选择速度,40,50,60,70,80后,90,100,};    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.calculator);
        结果=(的TextView)findViewById(R.id.speed);
        but1 =(按钮)findViewById(R.id.but);
        ArrayAdapter<串GT; speedadapter =新ArrayAdapter<串GT;(
                Calculatorrecon.this,android.R.layout.simple_spinner_item,
                速度);
        speedadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoespeed =(微调)findViewById(R.id.speed48);
        shoespeed.setAdapter(speedadapter);        ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(
                Calculatorrecon.this,android.R.layout.simple_spinner_item,
                尺寸);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoesize =(微调)findViewById(R.id.size);
        shoesize.setAdapter(适配器);        shoesize.setOnItemSelectedListener(本);    }    @覆盖
    公共无效onItemSelected(适配器视图<>为arg0,ARG1观,诠释ARG2,
            长ARG3){
        // TODO自动生成方法存根
        INT positition = shoesize.getSelectedItemPosition();
        开关(positition){
        情况下0:            打破;
        情况1:
            大小= 100;
            打破;
        案例2:
            大小= 80;
            打破;
        案例3:
            大小= 70;
            打破;
        情况4:
            大小= 60;
            打破;
        情况5:
            大小= 50;
            打破;
        情况6:
            大小= 40;
            打破;
        案例7:
            大小= 30;
            打破;        }
        INT speedz = shoespeed.getSelectedItemPosition();
        开关(speedz){
        情况下0:            打破;
        情况1:
            速度= 4;
            打破;
        案例2:
            速度= 5;
            打破;
        案例3:
            速度= 6;
            打破;
        情况4:
            速度= 7;
            打破;
        情况5:
            速度= 8;
            打破;
        情况6:
            速度= 9;
            打破;
        案例7:
            速度= 10;
            打破;        }
        but1.setOnClickListener(新View.OnClickListener(){            @覆盖
            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                计算();                result.setText(的String.format(%1F,结果2)+);
            }
        });    }    @覆盖
    公共无效onNothingSelected(适配器视图<>为arg0){
        // TODO自动生成方法存根    }    私人无效计算(){        结果2 = 0;        双X =尺寸* 8.4563764;
        双Y = 167.2 *速度;
        结果2 = Y / X;    }


解决方案

试试这个..

1)您的双击的String [] 变量的名称同样

 微调shoesize;
    微调shoespeed;
    按钮BTN;    的String [] =大小{选择尺寸,百CM,80 CM,70后CM,六十CM,
            的50 CM,40. CM,30. CM,};
    的String []速度= {选择速度,40,50,60,70,80后,90后,
            100,};    双final_size,final_speed,结果2;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.calculator);        BTN =(按钮)findViewById(R.id.btn);
        shoesize =(微调)findViewById(R.id.spinner1);
        shoespeed =(微调)findViewById(R.id.spinner2);        ArrayAdapter<串GT; speedadapter =新ArrayAdapter<串GT;(这一点,
                android.R.layout.simple_spinner_item,速度);
        speedadapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoesize.setAdapter(speedadapter);        ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,
                android.R.layout.simple_spinner_item,大小);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoespeed.setAdapter(适配器);        shoesize.setOnItemSelectedListener(新OnItemSelectedListener(){            @覆盖
            公共无效onItemSelected(适配器视图<>为arg0,视图V,INT POS机,
                    长ID){
                // TODO自动生成方法存根
                INT speedz = shoesize.getSelectedItemPosition();
                开关(speedz){
                情况下0:                    打破;
                情况1:
                    final_speed = 4;
                    打破;
                案例2:
                    final_speed = 5;
                    打破;
                案例3:
                    final_speed = 6;
                    打破;
                情况4:
                    final_speed = 7;
                    打破;
                情况5:
                    final_speed = 8;
                    打破;
                情况6:
                    final_speed = 9;
                    打破;
                案例7:
                    final_speed = 10;
                    打破;                }
            }            @覆盖
            公共无效onNothingSelected(适配器视图<>为arg0){
                // TODO自动生成方法存根            }        });        shoespeed.setOnItemSelectedListener(新OnItemSelectedListener(){            @覆盖
            公共无效onItemSelected(适配器视图<>为arg0,视图V,INT POS机,
                    长ID){
                // TODO自动生成方法存根
                INT positition = shoespeed.getSelectedItemPosition();
                开关(positition){
                情况下0:                    打破;
                情况1:
                    final_size = 100;
                    打破;
                案例2:
                    final_size = 80;
                    打破;
                案例3:
                    final_size = 70;
                    打破;
                情况4:
                    final_size = 60;
                    打破;
                情况5:
                    final_size = 50;
                    打破;
                情况6:
                    final_size = 40;
                    打破;
                案例7:
                    final_size = 30;
                    打破;                }
            }            @覆盖
            公共无效onNothingSelected(适配器视图<>为arg0){
                // TODO自动生成方法存根            }        });        btn.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                结果2 =计算();
                 Log.v(结果,+的String.format(%1F,结果2)。);
                            result.setText(的String.format(%1F,结果2)+);
            }        });    }    保护双重计算(){            双X = final_size * 8.4563764;
            双Y = 167.2 * final_speed;
            双RESULT2 = Y / X;        返回结果2;    }

I am new to android development i have a calulator page wherein i need to do small calculation on options selected from two spinner. I have used switch case to get results.

All UI is coming as expected but when i calculate using button results are not as expected and random.

can anyone point what mistake i am making??

activity

public class Calculatorrecon extends Activity implements OnItemSelectedListener {

    double size, speed, result1, result2;
    Button but1;
    TextView result;
    Spinner shoesize, shoespeed;
    String[] size = { "Select Size", "100 cm", "80 cm",
            "70 cm", "60 cm", "50 cm", "40 cm", "30 cm", };
    String[] speed = { "Select Speed", "40", "50", "60", "70", "80", "90", "100", };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator);
        result = (TextView) findViewById(R.id.speed);
        but1 = (Button) findViewById(R.id.but);
        ArrayAdapter<String> speedadapter = new ArrayAdapter<String>(
                Calculatorrecon.this, android.R.layout.simple_spinner_item,
                speed);
        speedadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoespeed = (Spinner) findViewById(R.id.speed48);
        shoespeed.setAdapter(speedadapter);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                Calculatorrecon.this, android.R.layout.simple_spinner_item,
                size);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoesize = (Spinner) findViewById(R.id.size);
        shoesize.setAdapter(adapter);

        shoesize.setOnItemSelectedListener(this);

    }

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        int positition = shoesize.getSelectedItemPosition();
        switch (positition) {
        case 0:

            break;
        case 1:
            size = 100;
            break;
        case 2:
            size = 80;
            break;
        case 3:
            size = 70;
            break;
        case 4:
            size = 60;
            break;
        case 5:
            size = 50;
            break;
        case 6:
            size = 40;
            break;
        case 7:
            size = 30;
            break;

        }
        int speedz = shoespeed.getSelectedItemPosition();
        switch (speedz) {
        case 0:

            break;
        case 1:
            speed = 4;
            break;
        case 2:
            speed = 5;
            break;
        case 3:
            speed = 6;
            break;
        case 4:
            speed = 7;
            break;
        case 5:
            speed = 8;
            break;
        case 6:
            speed = 9;
            break;
        case 7:
            speed = 10;
            break;

        }
        but1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                calculate();

                result.setText(String.format("%.1f", result2) + "");
            }
        });

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

    private void calculate() {

        result2 = 0;

        double x = size * 8.4563764;
        double y = 167.2 * speed;
        result2 = y / x;

    }

解决方案

Try this..

1)Your double and String[] variable names are same

Spinner shoesize;
    Spinner shoespeed;
    Button btn;

    String[] size = { "Select Size", "100 cm", "80 cm", "70 cm", "60 cm",
            "50 cm", "40 cm", "30 cm", };
    String[] speed = { "Select Speed", "40", "50", "60", "70", "80", "90",
            "100", };

    double final_size, final_speed, result2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator);

        btn = (Button) findViewById(R.id.btn);
        shoesize = (Spinner) findViewById(R.id.spinner1);
        shoespeed = (Spinner) findViewById(R.id.spinner2);

        ArrayAdapter<String> speedadapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, speed);
        speedadapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoesize.setAdapter(speedadapter);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, size);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shoespeed.setAdapter(adapter);

        shoesize.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View v, int pos,
                    long id) {
                // TODO Auto-generated method stub
                int speedz = shoesize.getSelectedItemPosition();
                switch (speedz) {
                case 0:

                    break;
                case 1:
                    final_speed = 4;
                    break;
                case 2:
                    final_speed = 5;
                    break;
                case 3:
                    final_speed = 6;
                    break;
                case 4:
                    final_speed = 7;
                    break;
                case 5:
                    final_speed = 8;
                    break;
                case 6:
                    final_speed = 9;
                    break;
                case 7:
                    final_speed = 10;
                    break;

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });

        shoespeed.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View v, int pos,
                    long id) {
                // TODO Auto-generated method stub
                int positition = shoespeed.getSelectedItemPosition();
                switch (positition) {
                case 0:

                    break;
                case 1:
                    final_size = 100;
                    break;
                case 2:
                    final_size = 80;
                    break;
                case 3:
                    final_size = 70;
                    break;
                case 4:
                    final_size = 60;
                    break;
                case 5:
                    final_size = 50;
                    break;
                case 6:
                    final_size = 40;
                    break;
                case 7:
                    final_size = 30;
                    break;

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                result2 = calculate();
                 Log.v("result", ""+String.format("%.1f", result2));
                            result.setText(String.format("%.1f", result2) + "");
            }

        });

    }

    protected double calculate() {

            double x = final_size * 8.4563764;
            double y = 167.2 * final_speed;
            double result2 = y / x;

        return result2;

    }

这篇关于多次微调caclulation结果不准确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆