while循环java的麻烦

时间:2016-05-02 23:30:45

标签: java while-loop

这非常简单,对不起,我无法解决这个问题。当我仅使用处理删除while循环时它可以工作,但我不确定我在while循环中做错了什么。有什么建议吗?

/*Cobalt 

 60, a radioactive form of cobalt used in cancer therapy, decays or 
 dissipates over a period of time. Each year, 12 percent of the 
 amount present at the beginning of the year will have decayed. If 
 a   container of cobalt 60 initially contains 10 grams, create a
 Java program to determine the amount remaining after five years. */
public class Cobalt {

    public static void main(String[] args) {

        //dec
        double CInitial = 10.0;
        double decay = .12;
        double CUpdatedA, CUpdatedB;

        //proc
        int years = 0;

        while (years < 5);
        {

            CUpdatedA = CInitial * decay;
            CUpdatedB = CInitial - CUpdatedA;
            years++;

        }

        //out           
        System.out.println("the amount of cobalt left after 5 years is"
                + CUpdatedB);

    }
}

2 个答案:

答案 0 :(得分:1)

在您的代码中,请仔细阅读此行:

while (years < 5);

最后有一个分号,表示此语句已完成

您可能会问,“为什么括号不会导致错误?” 括号表示一个部分,它不会影响代码。

使这项工作的方法是删除冒号。

此外,

您需要初始化变量,否则编译器将显示

variable CUpdatedB might not have been initialized

(写CUpdatedA,CUpdatedB = 0)

答案 1 :(得分:0)

此外,while循环问题,即删除分号。您似乎没有得到正确答案,因为在每个循环结束时,您的CInitial不会在该年度衰减后更新值。

这里使用CUpdatedB重置CInitial作为while循环中的最后一个语句。

public class Cobalt {

public static void main(String[] args) {

    //dec
    double CInitial = 10.0;
    double decay = 0.12;
    double CUpdatedA = 0, CUpdatedB = 0;

    //proc
    int years = 0;

    while (years < 5)
    {

        CUpdatedA = CInitial * decay;
        CUpdatedB = CInitial - CUpdatedA;
        CInitial = CUpdatedB;
        years++;

    }

    //out
    System.out.println("the amount of cobalt left after 5 years is: " + CUpdatedB);

}
}

产出:5年后留下的钴量为:5.277319168 我希望这是你期待的答案。