首页 > 软件 > 为什么在使用数组编程时,off-by-one容易发生错误

为什么在使用数组编程时,off-by-one容易发生错误

软件 2024-03-19

off-by-one错误

大小差一。。就是指某个变量的最大值和最小值可能会和正常值差1,或者循环多执行一次/少执行一次。一般在临界情况时发生。

为什么在使用数组的时候会发生错误?

索引超出了数组界限解决方法:

a.connected[i] = vertices[i+1];

称之为索引i+1。这将导致一个index out of bounds exception。(在你n等于19的例子中:有效索引将是[0-18]。

你的循环将从0-18开始,但是在该行中,它将会添加一个18 + 1 = 19,这是一个无效索引)在你的循环中将条件更改为:

for (int i = 0; i

确保它在添加之后不会超出界限。

Vertex [] vertices = new Vertex[n]; int [] numbers = new int[n*2]; AdjacencyList[] all = new AdjacencyList [n+1];for (Vertex v : vertices){
System.out.println(v.value);

AdjacencyList a = new AdjacencyList(v);
for (int i = 0; i < n; i += 2)
{

if (numbers[i] == v.value){
a.connected[i] = vertices[i+1];//array index out of bounds exception:19
else { a.connected[i] = v; }
}
all[0] = a; //add the finished adjacency list to the array

}

与n = 19我可以得到一个索引超出边界错误在代码中指出的点。我不确定我哪里会出问题,因为一切都还在19的范围内。

顶点=顶点列表[1-19],数字是一个平坦的边缘数组。

keil5数组下标异常

Keil5数组下标异常是指在使用Keil5编程时,数组的下标可能出现异常,比如数组的下标超出了数组的最大长度,或者下标为负数,这都会导致程序出现异常。为了避免这种情况,我们需要在编写程序时,对数组的下标进行有效的检查,以确保数组的下标不会出现异常。您可以在编写程序时,使用if语句来检查数组的下标,以确保数组的下标不会出现异常。

c语言未经处理的异常,求大佬指点

您好,很高兴回答您的问题。

您的这个题目,系统已经很明显告诉您了错误的原因。因为您定义的x为字符型数据,那么它对应的输入输出格式符为%c,但是您在输入语句中写的是%s,是字符串格式,不符合字符型单个变量的输入输出。根据题目意思,应该是要输入字符串,那么定义的时候就要写成charx[2],因为存放的是性别中文字,所以数组长度定义为2就可以了。您再试试哦。

VB 中的四个问题,大家帮帮我,急用……

1.清除数据Me.Spreadsheet1.Cells.Clear 导出数据me.Spreadsheet1.Export() 2.排序 Me.Spreadsheet1.Cells.Sort() 3.在窗体里加入一个按纽,命名为EventBn 利用EventBn_click()事件来实现对窗体移动事件的处理/ 模块代码如下: public Oldproc as long public BnHwnd as long public function Newproc(byval hwnd as long,byval msg as long,byval wp as long, byval lp as l

标签:编程 信息技术 编程语言 CC++ 计算机

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18