2

这是我要解决的问题。

“墨西哥人口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");
    }   

   }

编辑

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


导入 java.util.Scanner;

公共课随便{

公共静态无效主要(字符串[]参数){

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 ");
    }   

}

4

5 回答 5

3

mex 是一个整数。

我想你是想繁殖。

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

于 2013-03-06T16:58:57.073 回答
1

你的问题在这里:

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

将括号放在变量后面向 Java 发出信号,表明您正在尝试使用该名称调用函数(在本例中为mexand usa)。您实际上要做的是乘以这些值,因此您需要在其中使用星号:

while(mex*(Math.pow(1.07, t)) <= usa*(Math.pow(1.02, t)))
于 2013-03-06T16:58:56.733 回答
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 中,这些变量用作函数的参数;不是相反!

于 2013-03-06T16:58:18.357 回答
0

您已将括号应用于mexwhile 循环中的 " " 表达式(就好像它是一个函数),其中 " mex" 只是一个常规变量。您对“美国”的使用也是如此..

while(mex(Math.pow(1.07, t)) <= usa(Math.pow(1.02, t)))
         ^^^               ^
于 2013-03-06T16:58:24.993 回答
-2

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

 while(mex * (Math.pow(1.07, t)) <= usa * (Math.pow(1.02, t)))
于 2013-03-06T17:01:02.097 回答