java的新手,不明白为什么我的while循环程序不会运行

时间:2013-03-06 16:55:56

标签: java loops while-loop percentage

这是我想解决的问题。

“墨西哥人口为6200万,年增长率为7%。美国现有人口为2.8亿,年增长率为2%。如果这两个国家保持目前的增长率在增长方面,墨西哥的人口将在多少年内超过美国的一半?你的计划应该回答这个问题。“

好的,所以这是我到目前为止的代码。当我运行程序时,我收到此错误。

不确定如何修复它。任何人都可以帮忙吗? :/

import java.util.Scanner;

public class Whatever {

 public static void main (String [] args){

    Scanner in = new Scanner (System.in);

  int mex = 62000000;
  int usa = 280000000;
  int years = 0;
  double t = 0 ;

   while(mex(Math.pow(1.07, t)) <= usa(Math.pow(1.02, t)))
   {
       t++;
       years = t;
       if (mex > (usa * 0.5));
          break;
  }   

       System.out.println ("Mexicos population is half of America in " + years + "years");
    }   

   }

修改

对于任何想知道我最终得到代码工作的人。这是代码。


import java.util.Scanner;

公共课无论{

public static void main(String [] args){

Scanner scan = new Scanner (System.in);

double mex = 62000000;
double usa = 280000000;
double years = 0;

    while(mex <= usa/2) 
    {   
        years++;
    mex = mex * 1.07;
    usa = usa * 1.02;

    }       
    System.out.println ("Mexicos population is half of America in " + years + " years ");
    }   

}

5 个答案:

答案 0 :(得分:3)

mex是一个整数。

我认为你试图成倍增加。

如果你想要乘法,请使用mex *(Math.pow(1.07,t)。

答案 1 :(得分:1)

你的问题在这里:

while(mex(Math.pow(1.07, t)) <= usa(Math.pow(1.02, t)))

在变量向Java发出信号后,将括号放在您尝试调用具有该名称的函数(在本例中为mexusa)。 实际上要做的是将这些值相乘,所以你需要使用星号:

while(mex*(Math.pow(1.07, t)) <= usa*(Math.pow(1.02, t)))

答案 2 :(得分:0)

在您的代码中,您定义了几个变量:

int mex = 62000000;
int usa = 280000000;
int years = 0;
double t = 0 ;

但是,您尝试将它们用作函数:

while(mex(Math.pow(1.07, t)) <= usa(Math.pow(1.02, t)))

在Java中,这些变量用作函数的参数;不是相反!

答案 3 :(得分:0)

您已将括号应用于&#34; mex&#34;你的while循环中的表达式(好像它是一个函数),其中&#34; mex&#34;只是一个常规变量。使用&#34; usa&#34; ..

也是一样
while(mex(Math.pow(1.07, t)) <= usa(Math.pow(1.02, t)))
         ^^^               ^

答案 4 :(得分:-2)

要进行乘法运算,您需要使用*,即

 while(mex * (Math.pow(1.07, t)) <= usa * (Math.pow(1.02, t)))