Java 处理作用域时,uantity无法解析为变量错误,使用try catch块时如何修复

Java 处理作用域时,uantity无法解析为变量错误,使用try catch块时如何修复,java,exception,Java,Exception,我处理的是一个范围问题,它给了我一个无法解决变量错误的数量 我知道这意味着什么,但鉴于我的代码,我不知道如何修复它 我正在做一个银行账户程序,处理数量和价格,这些必须是双精度类型 我必须使用try-catch块来捕获异常,但这会导致我收到错误。我知道在使用变量之前必须声明变量,但是,在这种情况下,我不确定如何解决这个问题 这是我的密码: //Validate Quantity nullpointerexception try { Double quantit

我处理的是一个范围问题,它给了我一个无法解决变量错误的数量

我知道这意味着什么,但鉴于我的代码,我不知道如何修复它

我正在做一个银行账户程序,处理数量和价格,这些必须是双精度类型

我必须使用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");
            }

     }}
您在比试图从中访问数量的范围更小的范围内定义了数量

之前:

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

谢谢这确实奏效了,但我现在有一个不同的问题。