2013-07-15 124 views
-6

我在程序中有一個while循環,只有當某個條件成立時纔會執行某些操作,但在此之前它不會執行任何操作。每次運行循環時,我都會在控制檯上打印「運行」一詞,但這不再必要。當我刪除system.out.println時,循環立即關閉並停止工作。爲什麼會發生?Java while循環只適用於打印

int INFINITE = 1; 
try { 
    S3Object object = s3.getObject(new GetObjectRequest("saucyMMO", "logins.txt")); 
    while (INFINITE == 1) { 
     System.out.println(); 
     if (tryToLogin == true) { 
      INFINITE = 0; 
      BufferedReader br = new BufferedReader(
       new InputStreamReader(object.getObjectContent())); 
      String lineValue = null; 
      while((lineValue = br.readLine()) != null && loggedInAs == null) { 
      String splitResult[] = lineValue.split(","); 
       boolean retVal = splitResult[0].equals(ui.usernameLogin.getText()); 
       boolean retVal2 = splitResult[1].equals(ui.passwordLogin.getText()); 
       if (retVal == true && retVal2 == true) { 
        loggedInAs = splitResult[0]; 
      System.out.println("logged in as : " + loggedInAs); 
       } else if (retVal && !retVal2){ 
        System.out.println("User exists, but password is incorrect"); 
       } else { 

       } 
      } 
     } 
    } 
} catch (AmazonServiceException ase) { 

} catch (AmazonClientException ace) { 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

我在異常處理AmazonServiceException和AmazonClientException添加,但我收到任何錯誤使用或不使用的System.out.println。

+1

你怎麼知道它存在循環? – w4etwetewtwet

+9

您正在捕獲catch塊中的異常。這是一個**可怕的**想法。 – jahroy

+1

......特別是如果你的程序不符合你的期望。 –

回答

5

您正在吞服您的catch塊中的異常。

這是一個非常非常想法壞主意。

這樣做的問題是它使非常難異常。

您目前正在演示這種確切的情況。

e.printStackTrace()添加到您的其他catch塊。

當你運行你的程序時,你會看到一個信息豐富的堆棧跟蹤。

讀取堆棧跟蹤將幫助您找出發生了什麼問題。

這很明顯,你正在拋出一個亞馬遜相關的例外。

+1

這應該是一個評論... –

+1

我也有這麼想......我已經評論過了。我想我試圖把它放在這裏,所以我可以詳細說明如何解決問題或繼續調試。 – jahroy

+0

謝謝你,它確實幫助清除了一些東西,但它仍然沒有意義,爲什麼它應該很重要,如果while語句打印「跑」 – user1952381