当我使用语法代码equals,equalsIgnoreCase和compareTo时,比较字符串不起作用

时间:2018-02-04 13:08:45

标签: android xml

目标:
比较字符串

问题:
当我使用语法代码equals,equalsIgnoreCase和compareTo时,它不起作用。

我错过了什么部分?

的信息:
*我是android的新手

谢谢!

Rightclick and select copy adress and paste it in the a new browser in order see the picture in a original size

Rightclick and select copy adress and paste it in the a new browser in order see the picture in a original size

Rightclick and select copy adress and paste it in the a new browser in order see the picture in a original size

enter image description here

新图片:

enter image description here

    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>

2 个答案:

答案 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?