没有异常仍未出现在while循环中

时间:2013-12-24 13:04:17

标签: java android while-loop

以下是我的java代码块 我无法走出阻止,同样的代码在其他模块中运行完美。请帮助我

public void current_ER(View v){
        try{ 
                String[] parameters= {uid};
                Caller c=new Caller();

                c.url="current_ER.php";
                c.parameters=parameters;
                c.join(); c.start();

                String result=MainActivity.result;
                System.out.print("before while");
                while(result=="START") {
                    try {
                          Thread.sleep(10); 
                          System.out.print(result); 
                    }
                    catch(Exception ex) { 
                          ex.getLocalizedMessage();
                    System.out.print("in catch"); 
                    }
                }
                System.out.print("after while");    
                Toast.makeText(this, "ER Details->"+result , Toast.LENGTH_LONG).show();
                {                   
                    System.out.print("before start indent block");
                    /////////to next screen////
                    Intent Manage_Expense=new Intent(this,Manage_Expense.class);
                    Manage_Expense.putExtra("er_details", result);
                    //MainActivity.result="START";
                    Toast.makeText(this, "ER Details->"+result , Toast.LENGTH_LONG).show();
                    //startActivity(Manage_Expense);
                }

}catch(Exception e){
                System.out.println(e.getMessage());

}

    };

4 个答案:

答案 0 :(得分:4)

首先,使用:

while("START".equals(result))

为了比较字符串。

主要错误是您永远不会更新result

首先你设置:

String result=MainActivity.result;

因此resultMainActivity.result指向同一个对象。 但是,在您更新的另一个帖子中:

MainActivity.result=resp;

导致MainActivity.result指向resp,但result 仍然指向之前的值

如果要检查循环中的变量,必须确保循环内的值已更改。

答案 1 :(得分:1)

当您要比较2个字符串时,最好使用String.equals()==运算符可以更好地处理基元,但不能处理对象。

答案 2 :(得分:0)

除了使用String#equals()之外,还要确保变量标记为volatile,以便线程可以看到其他线程所做的更改。

答案 3 :(得分:0)

i updated my code as follows and it worked 

 System.out.print("before while");
               while("START".equals(MainActivity.result)) {
                    try {
                        Thread.sleep(10); 
                        System.out.print(MainActivity.result); 
                    }catch(Exception ex) { ex.getLocalizedMessage();
                    System.out.print("in catch"); 

                    }
                }

但我仍然无法弄清楚为什么我的原始代码不起作用