Java 嵌套for循环和数组索引越界异常的问题
我正在为老式电话计划编写Java代码,因此:Java 嵌套for循环和数组索引越界异常的问题,java,arrays,for-loop,Java,Arrays,For Loop,我正在为老式电话计划编写Java代码,因此: 乐队类别:public Band(LocalTime startTime、LocalTime endTime、DayOfWeek[]combinedDays、double intervalCost) 费率类别:public Rate(字符串名称、频带[]频带、整数间隔、双星成本、字符串编号root) 我想在Rate类中编写一个private Band[]selectBandsInDay(DayOfWeek day)方法,给定一周中的某一天,该方法
- 乐队类别:
public Band(LocalTime startTime、LocalTime endTime、DayOfWeek[]combinedDays、double intervalCost)
- 费率类别:
public Rate(字符串名称、频带[]频带、整数间隔、双星成本、字符串编号root)
private Band[]selectBandsInDay(DayOfWeek day)
方法,给定一周中的某一天,该方法返回由该周中的某一天的频带组成的频带数组
我写的是:
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;
}
private Band[]选择bandsinday(星期几){
波段[]波段天数=新波段[波段长度];
int size=0;
对于(inti=0;i我必须采用不同的方法
private Band[] selectBandsInDay(DayOfWeek day) {
int i = 0;
int length = 0;
for (Band band : bands) {
if(DayOfWeekHelper.isDayIn(day, band.getCombinedDays()))
length++;
}
Band[] bands_1 = new Band[length];
for (Band band : bands) {
if(DayOfWeekHelper.isDayIn(day, band.getCombinedDays()))
bands_1[i++] = band;
}
return bands_1;
}
我用isDayIn()方法创建了DayOfWeekHelper类:
getCombinedDays()
返回什么?哪一行引发异常?您是否调试了代码?size
可能是一个问题。是否应将size
重置为0一次i
递增?getCombinedDays()返回Band类的combinedDays参数,该参数是DayOfWeek.line的数组if(bands[j].getCombinedDays()[i]==day){
正在引发异常。@第一次尝试不应该,但如何避免将其重置为0?两个循环都使用外部数组的长度来确定何时停止。您可能需要更改j
public class DayOfWeekHelper {
public static boolean isDayIn(DayOfWeek day, DayOfWeek[] combinedDays) {
for (DayOfWeek d : combinedDays) {
if (d == day) {
return true;
}
}
return false;
}
}