繁体   English   中英

整数未按预期递增

[英]Integer not incrementing as expected

在我询问 SIZE 和数量的总量之前,我还更新了我的代码变量。 但是很抱歉现在遇到了新材料和新问题.....

 int pearl1 = 10, Cocount1 = 10, Perilla1 = 10, 
 pudding1 = 10, redbeans1 = 10, aloe1 = 10, jelly1 = 10, jade1 = 10;

     less.setOnClickListener( totalprice );
    plus.setOnClickListener( totalprice );
    Perilla.setOnClickListener( totalprice );
    jelly.setOnClickListener( totalprice );
    pearl.setOnClickListener( totalprice );
    aloe.setOnClickListener( totalprice );
    Coconut.setOnClickListener( totalprice );
    pudding.setOnClickListener( totalprice );
    redbeans.setOnClickListener( totalprice );
    jade.setOnClickListener( totalprice );


}

public OnClickListener totalprice = new
        OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.less: {
                        if (count > 0) {
                            count--;
                            textView.setText( "" + count );
                            if (medium.isChecked()) {
                                total_price.setText( Integer.toString( Integer.parseInt( "45" ) * count ) );
                                counter = Integer.parseInt( total_price.getText().toString() );
                                buttled.setChecked( false );
                            } else if (buttled.isChecked()) {
                                total_price.setText( Integer.toString( Integer.parseInt( "45" ) * count * 0 ) );
                                count = Integer.parseInt( total_price.getText().toString() );
                                Toast toast = Toast.makeText( Main20Activity.this, " 無瓶裝! 請重新選擇!", LENGTH_SHORT );
                                toast.show();
                            } else {
                                total_price.setText( Integer.toString( Integer.parseInt( "80" ) * count ) );
                                counter = Integer.parseInt( total_price.getText().toString() );
                                buttled.setChecked( false );

                            }
                        }
                        break;
                    }

                    case R.id.plus: {
                        if (count < max) {
                            count++;
                            textView.setText( "" + count );
                            if (large.isChecked()) {

                                total_price.setText( Integer.toString( Integer.parseInt( "80" ) * count ) );
                                counter = Integer.parseInt( total_price.getText().toString() );
                                buttled.setChecked( false );
                            } else if (buttled.isChecked()) {
                                total_price.setText( Integer.toString( Integer.parseInt( "45" ) * count * 0 ) );
                                count = Integer.parseInt( total_price.getText().toString() );
                                Toast toast = Toast.makeText( Main20Activity.this, "  無瓶裝! 請重新選擇!", LENGTH_SHORT );
                                toast.show();
                            } else {
                                total_price.setText( Integer.toString( Integer.parseInt( "45" ) * count ) );
                                counter = Integer.parseInt( total_price.getText().toString() );
                                buttled.setChecked( false );
                            }
                        }
                        break;
                    }

                }
                switch (v.getId()) {
                    case R.id.Perilla: {
                        counter = counter + Perilla1;
                        total_price.setText( counter );
                    }
                    case R.id.jelly: {
                        counter = counter + jelly1;
                        total_price.setText( counter );
                    }
                    case R.id.redbeans: {
                        counter = counter + redbeans1;
                        total_price.setText( counter );
                    }
                    case R.id.jade: {
                        counter = counter + jade1;
                        total_price.setText( counter );
                    }
                    case R.id.pearl: {
                        counter = counter + pearl1;
                        total_price.setText( counter );
                    }
                    case R.id.Coconut: {
                        counter = counter + Cocount1;
                        total_price.setText( counter );
                    }
                    case R.id.pudding: {
                        counter = counter + pudding1;
                        total_price.setText( counter );
                    }
                    case R.id.aloe: {
                        counter = counter + aloe1;
                        total_price.setText( counter );
                    }


                }
            }
        };

我的理解是:我用“counter”替换了 total_price。 选择紫苏的食材后,total_price 在输出中应该增加10,不是吗?

我使用案例并声明相同的 setOnClickListener 但是在我执行它后意外退出

您仅使用整数 10 实例化一个变量:

int pearl1, Cocount1, Perilla1,
    pudding1, redbeans1, aloe1, 
    jelly1, jade1 = 10;

改成:

int pearl1 = 10, Cocount1 = 10, perilla1 = 10, pudding1 = 10, redbeans1 = 10, aloe1 = 10, jelly1 = 10, jade1 = 10;

您的实施存在一些问题。 第一个是您将OnClickListener放在另一个OnClickListener 第二个是你的break语句不正确。 请在下面查看我的实现:

int pearl1 = 10, Cocount1 = 10, perilla1 = 10, pudding1 = 10, redbeans1 = 10, aloe1 = 10, jelly1 = 10, jade1 = 10;
int max = 99;

private Button.OnClickListener money = new
    OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {   
                case R.id.medium: {
                    total_price.setText("45");
                    counter = Integer.parseInt( total_price.getText().toString() );
                    break;
                } 
                case R.id.large: {
                    total_price.setText("80");
                    counter = Integer.parseInt( total_price.getText().toString() );
                    break;
                }
                case R.id.bottled: {
                    total_price.setText( "" );
                    break;
                }
            }
            less = (ImageButton) findViewById( R.id.less );
            plus = (ImageButton) findViewById( R.id.plus );

            less.setOnClickListener( AddandLess );
            plus.setOnClickListener( AddandLess );

    }
});



private Button.OnClickListener AddandLess = new 
    OnClickListener() {            
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.less: {
                    if (count > 0) {
                        count--;
                        textView.setText( "" + count );
                    }
                    break;
                }

                case R.id.plus: {
                    if (count < max) {
                        count++;
                        textView.setText( "" + count );
                    }
                    break; 
                }

        }
    }        
});


Perilla.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c){
    if (c) {
        counter=counter+Perilla1;
        total_price.setText(counter);
    }
  }
});


jelly.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c)
        if (c) {
            counter=counter+jelly1;
            total_price.setText(counter);
            }  
});

aloe.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c) {
        if (c) {
            counter=counter+aloe1;
            total_price.setText(counter);
        }
    }  
});

redbeans.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean c) {
            if (c) {
                counter=counter+redbeans1;
                total_price.setText(counter);
            }                                
        }

});

pearl.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c) {
        if (c) {
            counter=counter+pearl1;
            total_price.setText(counter);

        }
    }
});

Coconut.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c) {
        if (c) {
            counter=counter+Cocount1;
            total_price.setText(counter);
        }
    }
});

jade.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c) {
        if (c) {
            counter=counter+jade1;
            total_price.setText(counter);
        }
    }
});

pudding.setOnCheckedChangeListener( new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean c) {
        if (c) {
            counter=counter+pudding1;
            total_price.setText(counter);
        }
    }
});

int TotalPrice = counter * count;
String strTotalPrice = String.valueOf( TotalPrice );
total_price.setText( strTotalPrice );

编辑:

评论中提到的错误是因为textView在被调用时没有初始化。 onCreate添加以下内容:

textView = findViewById(R.id.nameOfTextView);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM