如何退出循环并显示答案

时间:2017-09-24 17:04:11

标签: java

这是我的代码:

or

为什么它不起作用?

使用等式y = 1,000,000 +(500,000 * n) 我希望n的所有值的总和小于n,包括0。 例如如果n = 3,我想要1,000,000 +(500,000 * 3)+ 1,000,000 +(500,000 * 2)+ 1,000,000 +(500,000 * 1)= 1,000,000 +(500,000 * 0)。

正如你在我的代码中看到的那样,我希望它发生两次,然后从另一个中减去一个总和。

2 个答案:

答案 0 :(得分:1)

您的代码永远不会按原样退出循环,因为它会使循环控制变量的递增速度快于递减循环。

while (baseDiamondPrice > 0) {
    baseDiamondPrice = ((baseDiamondPrice * 500000) + 1000000);
    baseDiamondPrice--;
}

如果baseDiamondPrice小于或等于零,则不进入循环。如果它是任何正数,则在每次循环迭代中添加1000000然后减去1。这永远不会收敛到零并退出循环。它也永远不会达到您的预期金额。您应该将控制变量与累加器变量分开。

您可以使用for循环来解决此赋值,其中i的循环控制变量i从0到n,以及一个单独的累加器变量来保存运行总和。

答案 1 :(得分:0)

您的控制逻辑不正确。它永远不会退出任何一个循环 你可以像下面的两个循环一样修改它。

import java.text.DecimalFormat;
import java.util.Scanner;
public class JavaApplication3 {
    public static void main(String[] args){

double baseDiamond, baseDiamondPrice, preDiamond, preDiamondPrice, baseDiamondCalc, finalECoins;
Scanner input = new Scanner(System.in);


System.out.print("What is your current Diamond Miner level? ");
preDiamondPrice = input.nextDouble();
System.out.print("Enter what diamondminer level ");
baseDiamondPrice = input.nextDouble();
double counter1 =baseDiamondPrice;
while (counter1 > 0) {
    baseDiamondPrice = ((baseDiamondPrice * 500000) + 1000000);
    counter1--;
}
double counter2 =preDiamondPrice;
while (counter2 > 0) {
    preDiamondPrice = ((preDiamondPrice * 500000) + 1000000);
    counter2--;
}
baseDiamondCalc = (baseDiamondPrice - preDiamondPrice);


DecimalFormat dRemover = new DecimalFormat("0.#");
System.out.println("You need " +dRemover.format(baseDiamondCalc)+ " ecoins for diamond miner level "+dRemover.format(baseDiamondPrice)+".");
    }}