无法在While循环中声明变量

时间:2015-09-29 19:26:54

标签: java variables while-loop

我在下面有这个代码但是没有用。但是,如果我在while循环之前声明Integer变量,它可以工作。输出将被打印。

        query = "SELECT COUNT(*) AS tot_by_code FROM `hr` WHERE `hr`.`code` = ?";              
        st = conn.prepareStatement(query);
        st.setString(1, code);
        rs = st.executeQuery();

        //Integer tot_by_code = null;
        while (rs.next()) {
            Integer tot_by_code = rs.getInt("tot_by_code");
        }


        System.out.println("Total patient by code : " + tot_by_code);

我检查了其他线程,并且据说你可以在循环或内部循环之前声明变量,那么为什么我不能在循环中使用变量声明来运行我的代码?提前谢谢。

2 个答案:

答案 0 :(得分:4)

可以在循环中声明它。问题是它只会在该循环中可见,因此您将无法在外部访问它。如果你想在外面打印它,你也必须在外面声明它。

有关范围的详细信息,请参阅JLS §6.3

特别是:

  

块中的局部变量声明的范围(第14.4节)是声明出现的块的其余部分

答案 1 :(得分:2)

你是否看到tot_by_code包在括号中,称为变量范围。因此范围的一侧没人知道tot_by_code ..

 System.out.println("Total patient by code : " + tot_by_code);

但是在这里你试图访问范围之外。所以在循环之前声明。

相关问题