2017-05-26 90 views
-2

即使滿足條件,控件也不退出循環。如果recipientEmailAddressList大小大於1,並且即使第一次嘗試本身爲foundEmail,它也不會退出循環。這個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)當我得到的響應它不退出循環繼續。所以嘗試與&但這個alos不能解決這個問題。 –

+1

@ CraigR8806當操作數是布爾值時,單個'&'*確實*表示比較,當左側是'false'時它不會快捷。即評估'false&2> 1'的右側,而'false && 2> 1'則不是這種情況 – NickL

回答

0

正如其他人所建議的,使用& &,而不是&。

另一件事是,即使你找到電子郵件,你的for循環遍歷電子郵件列表,將繼續。基本上,foundEmail設置爲true,然後繼續下一封電子郵件並將其設置爲false。 或者,放置「break」。或「迴歸真實」;後「foundEmail =真正的」

此外,而不是通過電子郵件循環列出自己,你可以使用recipientEmailAddressList.contains(studentEmail)

相關問題