2017-05-26 19 views
-2

条件が満たされていても、コントロールがループを終了していません。 のサイズが> 1で、foundEmailが最初の試行で真であっても、ループを終了していない場合と同様です。このdo whileループで何が間違っていますか? 以下のコードで何が間違っているか教えてください。他の人が示唆したように条件が満たされていても、制御がループを終了していませんか?

do { 
       if(reTry>=1){ 
        Thread.sleep(15000); 
       } 
       response = RestAssured.given().accept("application/json").get(url); 
       String responseBody = response.asString(); 
       JsonPath jsonPath = new JsonPath(responseBody); 
       List<String> recipientEmailAddressList = jsonPath.get("recipientEmail"); 
       System.out.println("receipeinet email list size "+recipientEmailAddressList.size()); 
       for (int i=0;i<recipientEmailAddressList.size();i++) { 
       if(recipientEmailAddressList.get(i).equalsIgnoreCase(studentEmail)){          
        System.out.println(recipientEmailAddressList.get(i)); 
        List<Object> rawRequest = jsonPath.get("rawRequest"); 
        JsonPath rawRequestJsonPath = new JsonPath(rawRequest.get(0).toString()); 
        String claimURL=rawRequestJsonPath.getString("parameters.claim_url"); 
        NewTempData.storedata(6, 1, claimURL); 
        System.out.println("Credential Claim URL "+claimURL); 
        foundEmail = true; 
       }else{ 
        foundEmail = false; 
       } 
       } 
       reTry++; 
      } while (reTry < 30 &!foundEmail); 
      if(foundEmail){ 
       return true; 
      } 
+0

を使用することができます本当の(!foundEmail)私は、ループが継続されたところで、応答を出さない。 &と試してみましたが、これは問題を解決しません。 –

+1

@ CraigR8806オペランドがブール値である場合、単一の '&' *は*を表します。左辺が 'false'のときにはショートカットされません。私。 'false&2> 1'の右側は評価されますが、' false && 2> 1'の場合はそうではありません – NickL

答えて

0

、& &の代わり&を使用しています。

もう1つのことは、電子メールのリストを通過するためのforループが電子メールを見つけたとしても続行されることです。基本的には、foundEmailはtrueに設定され、次の電子メールに進み、falseに戻します。 "break;"または "trueを返す"

また「foundEmail = true」をした後、電子メールを介してループすることは自分自身をリストする代わりに、あなたは私が&&だけでなく、左手の条件があるときにしようとした、非常に最初の時間についてはrecipientEmailAddressList.contains(studentEmail)

関連する問題