2016-10-02 31 views
-2

我正在處理一個範圍問題,它將「數量無法解析爲變量錯誤」。處理範圍,數量無法解析爲變量錯誤,使用try-catch塊時如何解決問題

我知道它是什麼意思,但我不知道如何解決它,給我的代碼。

我正在處理數量和價格的BankAccount計劃,這些必須是「雙」類型。

我必須使用try-catch塊來捕獲異常,但這會導致我收到錯誤。我知道變量必須先聲明才能使用它們,但是,在這種情況下,我不知道如何解決這個問題。

這裏是我的代碼:

//Validate Quantity 
    nullpointerexception 
    try { 
     Double quantity = Double.parseDouble((request.getParameter("quantity"))); 

    } catch (Exception e) { 
     hasError = true; 
      request.setAttribute("quantityError", true); 
      return; 

    } 


     //Validate Price 
     //Added after deadline to validate this entry and remove nullpointerexception  

      try{ 

    Double price = Double.parseDouble((request.getParameter("price"))); 


     } catch (Exception e) { 
      hasError = true; 
       request.setAttribute("priceError", true); 
       return; 

    } 


    // Redisplay the form if we have errors 
      if (hasError){ 
       doGet(request, response); 
       return; 
      } 
      else{ 
       // Cool, let's add a new description 
       List<InventoryEntry> entries = (List<InventoryEntry>) getServletContext().getAttribute("entries"); 

       // Get a reference to the guest book 
       //List<GuestBookEntry> entries = (List<GuestBookEntry>) getServletContext().getAttribute("entries"); 

       entries.add(new InventoryEntry(name, description, price, quantity)); 
       response.sendRedirect("BankAccounts"); 
      } 

    }} 

回答

0

你在除了你試圖從訪問一個較小的範圍內定義quantity

前:

try { 
    Double quantity = /* some val */; 
} catch() {...} 
System.out.println(quantity); //Quantity wasn't defined earlier? 

後:

Double quantity = 0D; //default value 
try { 
    quantity = /* some val */; 
} catch() {...} 
System.out.println(quantity); //Prints our value or some default 

當你離開的範圍的水平,你的變量是 「留下」 的可能。

String one = "1"; 
{ 
    String two = "2"; 
    { 
     String three = "3"; 
     //I can read one, two, three 
    } 
    //I can read one, two 
} 
//I can read one 
+0

謝謝。這有訣竅,但我現在有一個不同的問題。 –