我是一名初学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
答案 0 :(得分:0)
您在DOSE
内创建try block
变量
装置
{
double DOSE = input.nextDouble();
}
你是否看到DOSE
包在括号中,称为变量范围。所以在范围之外没人知道那个DOSE ..
所以尝试像
这样的东西double DOSE = 0;
try{
DOSE = input.nextDouble();
}