当前位置: 首页 > 知识库问答 >
问题:

为什么我无法使用扫描仪输入初始化我的双常数DOSE?

孔皓
2023-03-14

我是一名初级java程序员。我正在尝试编写一个简单的程序,根据物质的半衰期来计算一种物质在你体内的残留量,以及根据何时以及如何服用药物来计算何时达到平衡(后者尚未完成)。

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

我目前已经注释了最终的double 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个答案

姜鸿
2023-03-14

您在try block中创建DOSE变量意味着

{
     double DOSE  = input.nextDouble();
}

你有没有看到,DOSE包装在括号里,这被称为变量范围。所以在范围之外,没有人知道那个剂量。

所以试试这样的

double DOSE = 0;
try{
   DOSE = input.nextDouble();
}
 类似资料:
  • 问题内容: 我不明白为什么第15行不做任何输入,将不胜感激:3 输出量 请输入您的问题的第一个数字!2552所以您选择了2552选择您的第二个数字41您选择了第二个数字41现在输入ur运算符 由于某种原因,输出在最后一行结束并停止,并且不接收任何信息! 问题答案: 您需要在调用行的后面立即调用,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符。 每次您需

  • 因此,我是一个新的Java程序员,我正试图弄清楚为什么一段代码不能工作。我遇到的问题是“String interests=input.nextLine();”这一行,它跳过了用户的输入并跳转到下一个System.out,所以它只显示“Your Profile...”。在允许用户输入任何数据之前。抱歉,如果这是一个愚蠢的问题,我是很新的!

  • 我编写了一个函数来接收用户输入。找不到正确答案。总是失败。我现在疯了。

  • 我正在编写一个程序,帮助火星定居者计算他们潜在房屋的面积/大小。程序的整个前半部分按预期工作,但由于某种原因,当我提示用户是否愿意输入第二所房子时,我的扫描仪不再接受任何输入,程序执行结束,不允许我键入yes或no作为响应,它只是打印出用户提示并中断。我到底做错了什么?

  • 问题内容: 我想从文件中读取数据,但是在调用method 时得到了。即使我正在使用该方法,但它不起作用。 txt文件的第一行是: 问题答案: 怪罪法国语言环境:它使用逗号作为小数点分隔符,因此无法解析。 替换为可修复问题(演示1)。如果您想解析,请使用代替(demo 2 )。 您的代码中的第二个问题是使用用作分隔符。您应该使用单个反斜杠,否则包含的单词将破坏您的解析逻辑。

  • 它在do while循环内的第三行崩溃,不等待我的输入: 堆栈跟踪: 线程“main”java中出现异常。util。非接触性异常 在爪哇。util。扫描仪。throwFor(未知来源) 在爪哇。util。扫描仪。下一个(未知源) java.util.canner.next国际(来源不明) java.util.canner.next国际(来源不明) 在主。river.main(river.java: