2

これが私が解決しようとしている問題です。

「メキシコの人口は 6,200 万人で、年率 7% で増加しています。米国の現在の人口は 2 億 8,000 万人で、年率 2% で増加しています。これら 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 をインポートします。

パブリッククラス何でも{

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

}

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 に通知します (この場合はmexusa)。実際にやろうとしているのは、これらの値を乗算することなので、そこにアスタリスクが必要です

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" は単なる通常の変数です。「usa」の使い方も同じです。

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 に答える