Java 为网站上的新用户编制复合增长率

Java 为网站上的新用户编制复合增长率,java,Java,我正在写一个程序,它将打印出一个网站以每月4%的速度从10亿用户增长到15亿(然后是20亿用户)需要多少个月。然而,我要么在数学上有问题,要么在某个地方破坏了我的代码 以下是我迄今为止的代码: public class Exercise_432 { public static void main(String[] args) { double InitUsers = 1000000000; double NewUsers = 0;

我正在写一个程序,它将打印出一个网站以每月4%的速度从10亿用户增长到15亿(然后是20亿用户)需要多少个月。然而,我要么在数学上有问题,要么在某个地方破坏了我的代码

以下是我迄今为止的代码:

 public class Exercise_432 {

     public static void main(String[] args) {

         double InitUsers = 1000000000;
         double NewUsers = 0;
         double rate = 0.04;

         System.out.println("How many months will it take to reach 1.5 billion users?\n" + 
                       "How many months will it take to reach 2 billion users?");

         for (int months = 1; months <= 1000; ++months)
         {
             NewUsers = InitUsers * Math.pow(1.0 + rate, months);
             if(NewUsers >= 1500000000) {

             }else if (NewUsers >= 2000000000){

             }

             System.out.printf("%d%n", months);
         }

     }

 }
公共课堂练习\u 432{
公共静态void main(字符串[]args){
双用户=100000000;
双新用户=0;
倍率=0.04;
System.out.println(“达到15亿用户需要多少个月?\n”+
“要达到20亿用户需要多少个月?”;
对于(整数个月=1;个月=150000000){
}else if(新用户>=2000000000){
}
System.out.printf(“%d%n”,月);
}
}
}
有人能帮我,或者至少给我指出正确的方向吗


谢谢。

在您的代码中,您的
for循环执行无限,因为它中的条件总是满足的。你需要写出正确的条件。即使您可以使用for循环,但我个人更喜欢当条件位于不递增的变量上时使用while循环。在这个特定的问题中,我们必须增加
月数
,并检查
用户
上的条件。所以一段时间的循环会更好。请参见下面的实现

 public class Exercise_432 {

     public static void main(String[] args) {

       double users = 1; //Assuming it to be 1 Billion.
       double rate = 0.04; 
       int months = 0;

       while(users < 1.5) { //Stops looping if users count is >= 1.5 Billion
           users = users + (users * rate); //total new users = old users + new users for that month
           months++;
           if(users >= 1.5) {
               System.out.println(months);
           }
       }
       while(users < 2) { //Stops looping if users count is >= 2 Billion
           users = users + (users * rate);
           months++;
           if(users >= 2) {
               System.out.println(months);
           }
       }
     }
 } 
公共课堂练习\u 432{
公共静态void main(字符串[]args){
double users=1;//假设为10亿。
倍率=0.04;
整月=0;
而(用户数<1.5){//如果用户数>=15亿,则停止循环
用户=用户+(用户*比率);//当月新用户总数=旧用户+新用户
月++;
如果(用户>=1.5){
系统输出打印项次(月);
}
}
而(用户数<2){//如果用户数>=20亿,则停止循环
用户=用户+(用户*费率);
月++;
如果(用户>=2){
系统输出打印项次(月);
}
}
}
} 

for(int months=1;months+=1;months<1000)
对于循环语法,这是错误的,您不能直接进行计算吗
2/1.5=1.04^m
,求解
m
。取10亿本金*利率,并将其存储在变量中。使用一个while循环来实现这一点,每次当它少于15亿或20亿时,months++?我如何打破循环并打印出达到15亿用户的月数?@justLearning在我写的while循环中查看用户的条件。