Java 无法解决Android程序中的条件语句

Java 无法解决Android程序中的条件语句,java,android,Java,Android,我不知道我的if语句中有什么问题。即使我输入了正确的用户名和密码,它每次都会在CAT中显示sorry。我不得不删除整个程序,开始编写小的演示代码。请问,有人能检查一下if语句中有什么错误吗 @Override public void onClick(View v) { switch (v.getId()){ case R.id.submitButton: if (!(edtvUsername.equals("

我不知道我的
if
语句中有什么问题。即使我输入了正确的用户名和密码,它每次都会在CAT中显示sorry。我不得不删除整个程序,开始编写小的演示代码。请问,有人能检查一下
if
语句中有什么错误吗

  @Override
    public void onClick(View v) {
        switch (v.getId()){

            case R.id.submitButton:
                if (!(edtvUsername.equals(" ") && (edtvPassword.equals(" ")))) {
                   /* Toast toast =  Toast.makeText(LoginActivity.this, "Hi, Forgot username/password", Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0 );
                    toast.show();
                    relativeLayout.setBackgroundColor(getResources().getColor(R.color.red));*/
                    Log.i("TAG","Sorry");
                 }
                else if(edtvUsername.getText().equals("aa") && edtvPassword.getText().equals("aa")) {
        /*                toast = Toast.makeText(LoginActivity.this, "Successfully entered username/password", Toast.LENGTH_SHORT);
                        toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0 );
                        toast.show();
                        relativeLayout.setBackgroundColor(getResources().getColor(R.color.green));*/
                    Log.i("TAG","OK");
                    }
                else{ Log.i("TAG","...................");}
                break;

            case R.id.clearButton:
                Toast toast =  Toast.makeText(LoginActivity.this, "Forgot username/password", Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0 );
                toast.show();
                relativeLayout.setBackgroundColor(getResources().getColor(R.color.queenBlue));
        }


    }

    private void toastDef() {

    }
在这里:

您正在将对象编辑文本与字符串进行比较。
它将永远不相等

在这里:

您正在正确地将文本与字符串进行比较。

更改此选项

if (!(edtvUsername.equals(" ") && (edtvPassword.equals(" ")))) 

同样在您的if条件中,true由条件返回,false&false=false和!false为true,您应该使用它

 if(edtvUsername.getText().equals(" ") || edtvPassword.getText().equals(" ")){ 
 Log.i("TAG","Sorry"); 
} 
    else{
    ...
    }

edtvUsername
edtvPassword
中有值时,由于您正在检查
if(!)
,因此将执行此操作。。逻辑错误 删除
not条件

如果((edtvUsername.equals(“”&&(edtvPassword.equals(“”))

您希望它在其中一个字段为空时说“对不起”,因此您可以使用| |而不使用&&而不使用否定

试试这个

if (edtvUsername.getText().toString().isEmpty() || edtvPassword.getText().toString().isEmpty()) {

您忘记将
getText()
添加到第一个
if
语句中的
edtvUsername
edtvPassword
中。插入后仍然存在相同的问题。这是因为当密码和用户名为
aa
时,第一个语句将为
true
,因为它们都不等于
“”
我已将您的代码复制到我的代码中。它给我的结果与“抱歉”相同,应该给我的结果是“确定”。以下是答案。09-30 22:48:00.198 23968-23968/loginscreen.vjaymesh.com.assignment3_1 D/openglrender﹕ TextureCache::get:创建纹理(0xb934dac8):名称、大小、mSize=623044736 09-30 22:48:10.762 23968-23968/loginscreen.vjaymesh.com.assignment3_1 I/TAG﹕ 抱歉,因为在您的if条件中,条件返回true,false&false=false,并且!如果(edtvUsername.getText().equals(“”| | edtvPassword.getText().equals(“”){Log.i(“TAG”,“Sorry”);}确定,则应使用false提供true。但结果还是很遗憾。你认为我的if陈述从头到尾都是正确的吗?它给出的和前面一样。我已经照你说的做了。我不知道为什么我会得到同样的结果你应该从头到尾重复同样的结果:在
.equals()
之前添加
.getText()
,我还没有接触到你给定的代码。就是这样,现在对你有用吗?如果是,您可以将其标记为anwser吗?尝试使用修剪功能并检查
length>0
 if (!(edtvUsername.getText().equals(" ") && (edtvPassword.getText().equals(" ")))) 
 if(edtvUsername.getText().equals(" ") || edtvPassword.getText().equals(" ")){ 
 Log.i("TAG","Sorry"); 
} 
    else{
    ...
    }
if (edtvUsername.getText().toString().isEmpty() || edtvPassword.getText().toString().isEmpty()) {