-1

我已经尝试了一千零一种方法来执行此代码并为每个数组地址分配特定时间,但它总是给我一个索引错误。我不能说我的错误,请帮助..谢谢

仅供参考,我们正在使用提供的输入类,所以不要介意 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 的大小。

第二:假设您的数组的索引是 10,k 当前是 10。在您的 while 循环中,您将 +1 添加到 k,k 现在是 11。下一步:

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

这表示:

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

由于您的索引是 10,这也会给出 outOfBoundException

于 2013-11-03T23:36:30.150 回答