Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 嵌套for循环和数组索引越界异常的问题_Java_Arrays_For Loop - Fatal编程技术网

Java 嵌套for循环和数组索引越界异常的问题

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)方法,给定一周中的某一天,该方法

我正在为老式电话计划编写Java代码,因此:

  • 乐队类别:
    public Band(LocalTime startTime、LocalTime endTime、DayOfWeek[]combinedDays、double intervalCost)
  • 费率类别:
    public Rate(字符串名称、频带[]频带、整数间隔、双星成本、字符串编号root)
我想在Rate类中编写一个
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;
    }
}