为什么在交换机内部的条件语句会被忽略?

时间:2019-07-05 04:55:15

标签: android

我要显示的祝酒消息是“在所有字段中都填写!”当用户不会写东西时,他们单击“保存”按钮。

代码中没有错误,但是当我运行它时,它将完全忽略我的else条件,并将继续将空项目添加到我的列表中。

我已经读过某处以放入break,但仍然无法正常工作。

这是我的MainActivity.java的代码段

    case R.id.btnsave:
        if(!studLname.equals("") || !studFname.equals("") || !cboCourse.getSelectedItem().equals(0)){

            String lname = studLname.getText().toString();
            String fname = studFname.getText().toString();
            String course = cboCourse.getSelectedItem().toString();

            student.setLname(lname);
            student.setFname(fname);
            student.setCourse(course);

            Student.studentArrayList.add(student); //Global arraylist

            Log.d("test", "students:" + Student.studentArrayList);

           listView.setAdapter(studentAdapter);
            Toast.makeText(getApplicationContext(), "Item successfully added!", Toast.LENGTH_SHORT).show();
            Intent home = new Intent(AddStudentActivity.this, MainActivity.class);
            startActivity(home);
            studentAdapter.notifyDataSetChanged();
            break;
        }else{
            Toast.makeText(getApplicationContext(), "Fields can not be empty!", Toast.LENGTH_SHORT).show();
            break;
        }

6 个答案:

答案 0 :(得分:2)

尝试此条件语句

if(!studLname.getText().toString().equals("") && !studFname.getText().toString().equals("") && !cboCourse.getSelectedItem().equals(0))

您需要先从Edittext中获取Text,然后再进行检查。

答案 1 :(得分:2)

尝试一下。也会删除空格

    if(!studLnamegetText().toString().trim().equals("") || !studFnamegetText().toString().trim().equals("") || !cboCourse.getSelectedItem()getText().toString().trim().equals(0)){

答案 2 :(得分:1)

您的条件是否不正确。应该是&&而不是||

if(!studLname.equals("") && !studFname.equals("") && !cboCourse.getSelectedItem().equals(0)){

答案 3 :(得分:1)

在if语句中使用“&”(AND)代替“ ||”(OR)。 截至目前,当任一条件为true时,这意味着仅填充一个字段,而其他两个为空,那么它还将输入if条件,并对NON-FILLED字段取空值。

答案 4 :(得分:1)

正确的答案是其他所有人的综合答案。 您的“或”比较将触发内部检查(如果您未真正正确地阅读)是否已填写了单个框。您需要添加getText()。toString()并更改||到&&。

答案 5 :(得分:1)

您的代码有两个问题,

一个:您必须从edittext中获取文本,然后检查它是否为空

两个:您必须使用&&而不是||,因为如果在单个字段为非空时使用||,则条件为true。因此,为了确保所有三个值都不为空,请使用&&运算符

按以下说明更改代码,

case R.id.btnsave:

String lname = studLname.getText().toString();
String fname = studFname.getText().toString();
String course = cboCourse.getSelectedItem().toString();

if(!TextUtils.isEmpty(lname) 
    && !TextUtils.isEmpty(fname)
    && !TextUtils.isEmpty(course)){ 

    student.setLname(lname);
    student.setFname(fname);
    student.setCourse(course);

    Student.studentArrayList.add(student); //Global arraylist

    Log.d("test", "students:" + Student.studentArrayList);

    listView.setAdapter(studentAdapter);
    Toast.makeText(getApplicationContext(), "Item successfully added!", Toast.LENGTH_SHORT).show();
    Intent home = new Intent(AddStudentActivity.this, MainActivity.class);
    startActivity(home);
    studentAdapter.notifyDataSetChanged();
    break;

} else {

    Toast.makeText(getApplicationContext(), "Fields can not be empty!", Toast.LENGTH_SHORT).show();
    break;

}