当前位置: 首页 > 知识库问答 >
问题:

嵌套for循环和数组索引越界异常时出现问题

尹承业
2023-03-14

我正在为一个老式电话计划编写Java代码,所以我有:

  • 频段类:公共频段(LocalTime startTime,LocalTime endTime,DayofWeek[]combinedDays,double intervalCost)
  • 速率类:Public Rate(String name,BAND[]BAND,int intervalMs,double startCost,String numberRoot)

我想在Rate类中编写一个私有Band[]selectBandsInDay(DayOfWeekDay)方法,如果给定一周中的某一天,它将返回一个由该周中某一天的带组成的带数组。

我写的是:

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)。

我怎么能解决这个?

共有1个答案

郜修雅
2023-03-14

我不得不用另一种方法。

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类:

public class DayOfWeekHelper {
    public static boolean isDayIn(DayOfWeek day, DayOfWeek[] combinedDays) {
        for (DayOfWeek d : combinedDays) {
            if (d == day)  {
                return true;
            }
        }
        return false;
    }
}
 类似资料:
  • 这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。

  • 我一直在四处寻找是否有任何东西可以帮助我,但我不太了解人们的回答,任何我所了解的似乎都不能解决问题!所以基本上正如标题所说,我得到了一个数组索引越界异常,但我不知道为什么。非常感谢任何帮助。 代码:

  • 我试图弄清楚嵌套for循环是如何与JavaScipt中的多维数组一起工作的,但有一点让我有些困惑。以股票为例 这就是我所期望的结果123456。但是,如果我将数字添加到外部数组的末尾: 我仍然得到同样的输出1 2 3 4 5 6?我不明白为什么 输出是一个bcdyz,这是我所期望的。为什么字符串的行为会有所不同?

  • 我正在尝试学习异常处理。我似乎找不到String[]a=names(scnr);若要在超出3个元素时抛出超出界限的异常,请执行以下操作。我知道,大多数人都讨厌越界的错误,而我正在努力让它发生,我一辈子都搞不清我到底做错了什么。一整天都在搜索各种东西。但我似乎找不到我要找的东西。所以我需要一些帮助和视角。 因此,我输入一个完整的字符串,我根据逗号和空格对其进行定界(修剪和拆分),然后将这些片段存储到

  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥

  • 这段代码是关于一个水罐车游荡在一个环境中寻找有任务的水站。 试图通过访问点的数组列表进行递增,但每次运行代码时,我都得到一个“indexoutofboundsexception”,但其索引不同,而且大小总是与索引相同,所以我非常困惑。中断程序的索引/大小看起来是随机变化的。 示例错误:线程“main”java.lang.IndexOutOfBoundsException:Index:5,SIZE: