目标:
比较字符串
问题:
当我使用语法代码equals,equalsIgnoreCase和compareTo时,它不起作用。
我错过了什么部分?
的信息:
*我是android的新手
谢谢!
新图片:
private String _EASY = "Easy", _MEDIUM = "Medium", _HARD = "Hard";
public void calculateMath(View view)
{
TextView status = (TextView)findViewById(R.id.txtvw_status);
String a1 = status.getText().toString();
String a2 = _EASY;
if (status.getText().toString().equals(_EASY));
{
int ffsdf = 23;
}
if (a1.equals(a2));
{
int ffsdf = 23;
}
if (a1.equalsIgnoreCase(a2))
{
int ffsdf = 23;
}
if (a1.compareTo(a2) == 0)
{
int ffsdf = 23;
}
}
布局/ activity_play.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtvw_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="50sp"
android:text="Easy"
android:textSize="30sp" />
<Button
android:id="@+id/btn_calculate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="calculateMath"
android:text="Calculate" />
</LinearLayout>
答案 0 :(得分:0)
我在尝试比较过去的字符串时遇到了类似的问题。尝试Objects.equals(a1,a2)
,.equals()
测试值是否相等(无论它们是逻辑&#34;等于&#34;)。
Objects.equals()只是在调用.equals()之前检查空值,所以你不必这样做。
在我看来,对于字符串,你几乎总是想使用Objects.equals()。 您可以在此处找到有关Objects类的更多信息:Objects class
的CompareTo:
将此对象与指定的订单对象进行比较。返回一个 负整数,零或正整数,因为此对象较少 比,等于或大于指定的对象。
最适合其默认形式的数值,您必须覆盖它才能比较Strings。有关覆盖的信息可以找到here (有关compareTo方法的更多信息,请参见here)
答案 1 :(得分:0)
您的代码的问题是ffsdf
的声明。您必须在if
语句之外声明它。
这将有效
private String _EASY = "Easy", _MEDIUM = "Medium", _HARD = "Hard";
public void calculateMath(View view)
{
TextView status = (TextView)findViewById(R.id.txtvw_status);
String a1 = status.getText().toString();
String a2 = _EASY;
int ffsdf;
if (a1.compareTo(a2) == 0)
{
ffsdf = 23;
}
}
至于为什么会发生这种情况,请参阅此问题Why can't variables be declared in an if statement?