import java.util.*;
public class Investment
{
public static int years=0;
public static void main(String[] args)
{
Scanner kbd = new Scanner(System.in);
System.out.println("Please enter an integer representing the whole dollar value of your initial investment: $");
int startBal=kbd.nextInt();
System.out.println("Please enter the whole number percentage, excluding the percent sign, of the interest rate on the investment.");
int interestRate=kbd.nextInt()/100;
int endBal=startBal*2;
int currentBal=startBal;
while (endBal>=currentBal)
{
currentBal=currentBal*interestRate+currentBal;
years++;
}
System.out.println("It will take "+years+" years to double your investment.");
}
}
我看到的输出是:
请输入一个表示初始投资的全部美元价值的整数:$
10000个
请输入投资利率的整数百分比,不包括百分号
5
“10000”和“5”是我的输入。程序应该用答案“15”打印我的最终陈述,但是不做任何事情,并且不会终止。
答案 0 :(得分:3)
int interestRate=kbd.nextInt()/100;
由于interestRate
是int
,因此它会向下舍入为零。
所以这一行:
currentBal=currentBal*interestRate+currentBal;
解析为:
=> currentBal=currentBal*0+currentBal;
=> currentBal=0+currentBal;
=> currentBal=currentBal;
因此值永远不会增加,所以永远不会达到其初始值的两倍,因此无限循环。
您必须将该行替换为:
double interestRate=kbd.nextInt()/100.0;
答案 1 :(得分:1)
您的 interestRate 被声明为int,因此它将被设置为0.
您应该将所有值声明为双精度数,因为我们正在谈论我们想要确切的资金:)
答案 2 :(得分:1)
您有int
个利率,除以100
后,变为0
。设为double
并使用double
文字100.0
进行除法,以强制进行浮点除法。
double interestRate=kbd.nextInt()/100.0;
currentVal
变量也必须是double
。
我的输出结果如下:
Please enter an integer representing the whole dollar value of your initial investment: $
10000
Please enter the whole number percentage, excluding the percent sign, of the interest rate on the investment.
5
It will take 15 years to double your investment.
这将让程序完成。但通常是it's not a good idea to use a double
to store money。
答案 3 :(得分:0)
你做整数除法5/100 = 0余数5.因此在你的计算中你乘以0所以你的当前余额将始终为0并且永远不会达到最终余额。尝试使用双倍的利率而不是整数。
答案 4 :(得分:0)
while (endBal>=currentBal)
{
currentBal=currentBal*interestRate+currentBal;
years++;
}
当然它永远不会终止,你只是递增几年但是while上的变量是endBal和currentBal