【发布时间】:2021-04-16 13:33:43
【问题描述】:
我正在为老式电话套餐编写 Java 代码,所以我有:
- 乐队类:
public Band(LocalTime startTime, LocalTime endTime, DayOfWeek[] combinedDays, double intervalCost) - 速率类:
public Rate(String name, Band[] bands, int intervalMs, double startCost, String numberRoot)
我想在 Rate 类中编写一个 private Band[] selectBandsInDay(DayOfWeek day) 方法,给定一周中的某一天,返回一个由一周中的那一天的波段组成的 Band 数组。
我写的是:
private Band[] selectBandsInDay(DayOfWeek day) {
Band[] bandsInDay = new Band[bands.length];
int size = 0;
for (int i=0; i<bands.length; i++) {
for (int j=0; j<bands.length; j++) {
if (bands[j].getCombinedDays()[i] == day) {
bandsInDay[size] = bands[i];
size++;
}
}
}
return bandsInDay;
}
但我不断收到索引超出范围异常(索引 2 超出长度 2 的范围)。
我该如何解决这个问题?
【问题讨论】:
-
getCombinedDays()返回什么?哪一行抛出异常?你调试过你的代码吗? -
size在这里可能是个问题。一旦i增加,size是否应该重置为 0? -
getCombinedDays() 返回 Band 类的 combineDays 参数,是 DayOfWeek 的数组。
if (bands[j].getCombinedDays()[i] == day) {行正在抛出异常。 -
@firsttry 它不应该,但我怎样才能避免它重置为 0?
-
两个循环都使用外部数组的长度来确定何时停止。您可能需要将
j<bands.length更改为j<bands[i].getCombinedDays().length