为了账号安全,请及时绑定邮箱和手机立即绑定

仅在满足一个或另一个条件时继续

仅在满足一个或另一个条件时继续

鸿蒙传说 2022-06-30 18:07:12
我有一个基本上是调查活动的应用程序。有些问题要求在继续之前填写一组条件或另一组条件。当用户按下是时,他们会得到一组 EditText 字段,如果他们按下否,他们会得到另一组。任何一种选择都会启用相同的继续按钮,但我需要检查是否只填写了两组中的一组,然后再继续下一个活动。    bContinue.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            if (myYesSection.isShown() && valueCombined.getText().toString().isEmpty()){                Toast.makeText(getApplicationContext(), "Please enter the combined score.", Toast.LENGTH_LONG).show();            }            if (myNoSection.isShown() && valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){                Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show();            }            else{                Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class);                startActivity(toNextActivity);            }        }    });在操作中,如果valueCombined被填写,toast 会出现“请填写所有字段”。并且用户不会去下一个活动。如果valueCombined填写了,我不需要填写其他字段。填写valueOne、valueTwo和valueThree允许打开下一个活动,但要敬酒“请输入综合分数”。我必须更改什么以便按下按钮只需要两个条件之一才能继续?更新工作代码感谢@Andreas 的课程。这会准确检查我需要什么,并且如果显示错误的条件集,则不会弹出错误的吐司:   bContinue.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            int count = 0;            if (combinedValue.getText().toString().isEmpty()){                if (myYesSection.isShown()) {                    Toast.makeText(getApplicationContext(), "Please enter combined score.", Toast.LENGTH_LONG).show();                }                count++;            }            if (valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){                if (myNoSection.isShown()) {                    Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show();                }                count++;            }
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果您有例如 3 个条件,并且您只想在其中 1 个为真时才做某事,请计算真条件的数量:


int count = 0;

if (condition1)

    count++;

if (condition2)

    count++;

if (condition3)

    count++;

if (count == 1) {

    // Yay!

}

或者使用三元运算符来缩短它:


if (1 == (condition1 ? 1 : 0) +

         (condition2 ? 1 : 0) +

         (condition3 ? 1 : 0)) {

    // Yay!

}

如果您只有 2 个条件要检查,请使用异或运算符:


if (condition1 ^ condition2) {

    // Yay!

}

JLS 15.22.2。布尔逻辑运算符&, ^, 和|将运算符定义为:


结果值是true操作数值是否不同;否则,结果为false。


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号