-1

このコードを実行して特定の時間を各配列アドレスに割り当てる方法を1000通り試しましたが、常にインデックスエラーが発生します。私は自分の間違いを伝えることができません.助けてください..ありがとう

参考までに、提供された入力クラスを使用しているので、ITI1120.readDouble() 行は気にしないでください。

System.out.println("Enter a maximum time: ");
double max = ITI1120.readDouble();
System.out.println("Enter a time step: ");
double h = ITI1120.readDouble();
double [] t = new double[] {};
int k = 0;
t[k] = 0.0;
while (t[k]<=max)
{
  k = k + 1;
  t[k] = t[k-1] + h;
  System.out.println(t[k]);
}
4

3 に答える 3

1

私はこのコードを実行するために何千もの方法を試しました

千?デバッガーの使用方法を学びます。それは明らかです。

最大時間と時間ステップがあります。すべての時間を格納するために必要な配列要素の数を計算します。

int n = (int)max/h + 1;

次に、その長さで配列を宣言します。

System.out.println("Enter a maximum time: ");
double max = ITI1120.readDouble();
System.out.println("Enter a time step: ");
double h = ITI1120.readDouble();
// This is an array of length zero.
int n = (int)max/h + 1;
double [] t = new double[n];
int k = 0;
t[k] = 0.0;
while (t[k]<=max)
{
  k = k + 1;
  // There's no t[1] in a zero length array.
  t[k] = t[k-1] + h;
  System.out.println(t[k]);
}
于 2013-11-03T23:34:19.670 に答える
0

存在しないt要素にアクセスしようとするため、配列のサイズを指定する必要があります。t[0]

于 2013-11-03T23:33:38.260 に答える
0

まず、配列 t のサイズを指定します。

2 番目: 配列のインデックスが 10 で、k が現在 10 であるとします。while ループで k に +1 を追加すると、k は 11 になります。次:

t[k] = t[k-1] + h;

これの意味は:

t[11] = t[11-1] + h;

インデックスは 10 なので、これも outOfBoundException を返します

于 2013-11-03T23:36:30.150 に答える