Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java Servlet中将值分配给Double时出错_Java_Servlets_Double - Fatal编程技术网

在Java Servlet中将值分配给Double时出错

在Java Servlet中将值分配给Double时出错,java,servlets,double,Java,Servlets,Double,我在调试一个java servlet的错误。我给类中的一个Double赋值,但是偶尔在运行servlet时,我会得到一个随机数作为值。不确定这是否与使用包装器与原语有关 下面是一段代码: //剩下的代码在这里---- 当我运行servlet时,有时会将MinCost的值设为其他数字,有时它是正确的 我修改了代码,只声明变量MinCost,但不给它赋值,然后在我的doPost方法中给它赋值 有没有解释为什么会发生这种情况 谢谢我想这是因为之前的请求。不要忘记,同一个servlet实例用于多个请

我在调试一个java servlet的错误。我给类中的一个Double赋值,但是偶尔在运行servlet时,我会得到一个随机数作为值。不确定这是否与使用包装器与原语有关

下面是一段代码:


//剩下的代码在这里----


当我运行servlet时,有时会将MinCost的值设为其他数字,有时它是正确的

我修改了代码,只声明变量MinCost,但不给它赋值,然后在我的doPost方法中给它赋值

有没有解释为什么会发生这种情况


谢谢

我想这是因为之前的请求。不要忘记,同一个servlet实例用于多个请求-您是否希望在每个请求开始时的值为10000000.0?servlet不是这样工作的。如果您想要对象中的状态,以及每个请求开始时的新状态,则必须将该状态放入单独的类中,并在doGet/doPost/service等中创建该类的实例。

我猜这是由于以前的请求而发生的。不要忘记,同一个servlet实例用于多个请求-您是否希望在每个请求开始时的值为10000000.0?servlet不是这样工作的。如果您想要对象中的状态-以及每个请求开始时的新状态-您必须将该状态放入一个单独的类中,并在doGet/doPost/service等中创建该类的实例。

如果您告诉我们您得到的值类型,可能会有所帮助,请注意,您使用的是一个Double而不是Double(类而不是原语)。那么,它应该是一个常量?然后声明它
final
并观察编译时错误。如果你告诉我们你得到什么类型的值,如何得到它们等,可能会有所帮助。请注意,你使用的是Double而不是Double(类而不是原语)。那么,它应该是常量?然后声明它
final
并观察编译时错误。是的,你是对的-我在每个请求的开始处获得10000000.0值。没有意识到它是同一个servlet实例。谢谢向上投票并接受答案是表达感谢的更好方式。不过,在看过他的代表之后,他并不真的需要这些。顺便说一句,修复方法不是在每个请求开始时设置值,而是将状态移出servlet。否则,如果您有两个并发请求,它们将践踏对方的状态。这一点很好。这是我最初的反应,但我明白你对并发请求的意思…所以,这可能是一个愚蠢的问题,但是如果我在servlet中有多个方法,除了doPost,我想有一个所有方法都可以访问的全局变量,会怎么样?或者我只需要将变量作为参数传递给所有不同的方法吗?是的,你是对的-我在每个请求的开始处获得10000000.0值。没有意识到它是同一个servlet实例。谢谢向上投票并接受答案是表达感谢的更好方式。不过,在看过他的代表之后,他并不真的需要这些。顺便说一句,修复方法不是在每个请求开始时设置值,而是将状态移出servlet。否则,如果您有两个并发请求,它们将践踏对方的状态。这一点很好。这是我最初的反应,但我明白你对并发请求的意思…所以,这可能是一个愚蠢的问题,但是如果我在servlet中有多个方法,除了doPost,我想有一个所有方法都可以访问的全局变量,会怎么样?或者我只需要将变量作为参数传递给所有不同的方法?
public class MyClass extends HttpServlet {

      private Double MinCost = 10000000.0;

      public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {