为什么我不能用扫描仪输入初始化我的双倍常量DOSE?

时间:2015-09-22 19:00:48

标签: java variables constants final

我是一名初学java程序员。我试着编写一个简单的程序,根据物质的半衰期来计算物质中剩余多少物质,并根据药物的使用时间和方式达到平衡时间(后者)尚未完成)。

我最初遇到了扫描仪资源泄漏的问题,但我在这里找到了答案。但是,既然我已经修复了扫描仪,我似乎无法将常量双变量初始化为用户输入。扫描程序本身工作,变量获得输入值,但java一直拒绝它说" DOSE无法解析为变量"。我甚至放了一个System.out.println(DOSE);在扫描仪输入后测试扫描仪是否正常工作,确实如此。但是程序将不会运行,除非我在程序中进一步初始化变量,这只会覆盖以前成功输入的DOSE值!

我目前有最后的双DOSE = 5初始化注释,这是抛出错误的原因。如果我删除那些注释斜杠,那么程序工作正常,但用户输入无关紧要。

我试图在这里找到解决方案,但我没有成功。

package halflife;
import java.util.Scanner;
public class HalfLifeCalculation {
    public static void main(String[] args) {

        //variables scanner designated
        Scanner input = new Scanner(System.in);
        try {
            System.out.print("Enter your daily dose: ");
            double DOSE = input.nextDouble();
            System.out.println(DOSE);
        } finally {
            input.close();

        } //try end

        //variables pre-set
        int day = 2;        
        //final double DOSE = 5;
        final double HALFLIFE = 0.175;
        double result = (DOSE*HALFLIFE);

        //pre-calculated header
        System.out.println("Day 1\nRemaining substance is " + result + " mg\n");

        //while loop calculation
        while (day < 101) {
            System.out.println("Day " + day);
            System.out.println("Remaining substance is " + (result = (result + DOSE)*HALFLIFE) + " mg\n");
            day++;

        } //while end
    } //main end
} //class end

1 个答案:

答案 0 :(得分:0)

您在DOSE内创建try block变量 装置

{
     double DOSE  = input.nextDouble();
}

你是否看到DOSE包在括号中,称为变量范围。所以在范围之外没人知道那个DOSE ..

所以尝试像

这样的东西
double DOSE = 0;
try{
   DOSE = input.nextDouble();
}