我有elseif语句,其中我声明flag为false并且我声明了
Resources r = getResources();
String refrigerant;
String[] refrigerant1 = r.getStringArray(R.array.refrigerant);
在我的程序中想要设置flag = true但是我的for循环没有被执行,并且标志保持为false 请给我解决方案。
数组声明有什么问题吗?
else if (ref_flg == true && ptflg == false)
{
for (int i1 = 0; i1 < refrigerant1.length; i1++)
{
if (refrigerant == "")
{
if (et1.getText().toString()== refrigerant1[i1])
{
flag = true;
System.out.println("flag"+flag);
}
}
else
{
if (refrigerant == refrigerant1[i1])
{
System.out.println("refrigerant"+refrigerant);
flag = true;
System.out.println("flag"+flag);
}
}
}
if (flag == true)
{
if (refrigerant == "")
{
if (et1.getText().toString() != "")
{
refrigerant = et1.getText().toString();
}
}
temp_flg = true;
et1.setText("");
}
else
{
System.out.println("flag"+flag);
alertDialog.setTitle("Reset...");
alertDialog.setMessage("Enter Valid REF");
alertDialog.setButton2("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
dialog.dismiss();
}
});
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
ref_flg = false;
}
}
答案 0 :(得分:1)
您永远不应该将字符串与“==”进行比较,因为它们可能是不同的对象。请改用str.equals(otherStr)或str.equalsIgnoreCase(otherStr)。如果你不介意前导和尾随空格,最好在之前调用trim():
boolean equalStr(String str1, String str2)
{
if((str1 != null && str2 == null) || (str1 == null && str2 != null))
return false;
if(str1 == null && str2 == null)
return true;
return str1.trim().equals(str2.trim());
}
答案 1 :(得分:0)
始终使用.equals(...)来测试相等性。这适用于所有对象(甚至是字符串)。