Java等于函数无法正常工作

时间:2016-02-15 05:38:40

标签: java android if-statement

我知道在stackOverflow上多次询问这个问题。但是我仍然无法获得 等于 的功能,以使两个字符串正常工作。

这就是我正在做的事情以及我面临的问题。 我以下列方式调用AsyncTask方法

String ServerResponse = realTimeTask.execute("http://www.xyz.co/tests/ems/realtimequery.php?q="+ newString).get();

newString变量是一个动态变量,我从我在我的应用程序中使用的导航抽屉中获取。

String变量newString可以根据导航抽屉中单击的项目具有7个不同的值。

我想要做的是在动态变量newString和静态变量之间进行字符串比较的简单字符串让我们说

String aVar = "Stenter";

现在我尝试使用比较方式

if (newString.equals(aVar)) {
                System.out.println("This is a stenter");
            }
            else{
                System.out.println("This is not a stenter");
            }

但是没有运气,每次我用newString运行这个条件也等于Stenter。我在else部分得到了结果。

有人能指出我在哪里错了吗?请不要低估这个问题,因为我已经在互联网上到处查看,然后在等待并尝试了一天之后发布了我的问题。

提前致谢!

----------------- EDIT ----------------------------- ------------------------- 这是代码,它将告诉我如何声明newString

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_machine_details);

        String newString;
        if (savedInstanceState == null) {
            Bundle extras = getIntent().getExtras();
            if(extras == null) {
                newString= null;
            } else {
                newString= extras.getString("keyName");
                Toast.makeText(this, newString, Toast.LENGTH_SHORT).show();
            }
        } else {
            newString= (String) savedInstanceState.getSerializable("keyName");
            Toast.makeText(this, newString, Toast.LENGTH_SHORT).show();
        }


        mDrawerList = (ListView)findViewById(R.id.navList);
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
        mActivityTitle = getTitle().toString();


        addDrawerItems();
        setupDrawer();


        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        RealTimeTask realTimeTask = new RealTimeTask();
        try {
           String ServerResponse = realTimeTask.execute("http://www.xyz.co/tests/ems/realtimequery.php?q="+ newString).get();


            String aVar = "Stenter";
            System.out.println(newString);

            newString.trim();

            if (newString.equalsIgnoreCase(aVar)) {
                System.out.println("This is a stenter");
            }
            else{
                System.out.println("This is not a stenter");
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

调用asyncTask方法后,if条件位于try catch块中。

1 个答案:

答案 0 :(得分:1)

可能是不匹配的情况你可以尝试

1) if (newString.matches(aVar)){
}

2) if (newString.equalsIgnoreCase(aVar)){
}

尝试newString.trim()然后比较

trim()方法删除变量之后和之前的空格,如

String s="abc ";   //space at last

s.trim()将删除最后一个空格并返回"abc"