检查数组是否已排序,返回 true 或者 false
我写了一个简单的程序,刚刚返回 true, 如果阵列否则排序 false, 我继续出现一个例外 eclipse, 我只是无法理解为什么。 我想知道有人可以看待我的代码,似乎解释为什么我得到一个例外 array out of bounds.
public static boolean isSorted/int[] a/
{
int i;
for/i = 0; i < a.length; i ++/;{
if /a[i] < a[i+1]/ {
return true;
} else {
return false;
}
}
}
public static void main/String[] args/
{
int ar[] = {3,5,6,7};
System.out.println/isSorted/ar//;
}
没有找到相关结果
已邀请:
13 个回复
裸奔
赞同来自:
首先,我必须在源周期中指定一个语法错误。 即,逗号有一个点 /
/ 在图括号之前 /
/, 它推出循环体。 必须删除此分号。
另请注意,我重新格式化代码的代码以使其更可读。
现在让我们讨论在您的周期内发生的事情。 周期迭代器
首先
并结束
. 只要
函数作为您的阵列索引,是有意义的,表明这一点
a[0]
是第一个元素,和
a[a.length - 1]
- 您的阵列的下一个元素。 但是,在您的循环的身体中,您还写了一个索引
. 它的意思是 , 如果什么
一样
, 然后你的索引是平等的
, 哪个超出了阵列的边界。
功能
因为它回归也存在重大问题 true 首次
和 false 这是第一次,当它不是那么; 因此,它实际上没有检查数组是否完全分类! 最有可能,他只检查前两个记录的排序。
具有相似逻辑的函数,但检查数组是否真实排序,是
窦买办
赞同来自:
或逻辑上等同的替代:
郭文康
赞同来自:
a[i+1]
, 您从阵列的末尾运行。
如果必须与以下项目进行比较,请停止迭代 1 元素早些时候 /并删除逗号点 Java 将被解释为循环体
/:
莫问
赞同来自:
只指的是阵列的元素,最终条件的最后一部分不是
如果第一部分是假的,则处理
停止第一个未排序的元素
董宝中
赞同来自:
a[i+1]
什么时候
给你这个错误。
例如,在数组长度中 10 你有元素 0 到 9.
a[i+1]
, 什么时候
一样 9, 展示
a[10]
, 哪个在边界之外。
使固定:
此外,您的代码一旦调用,您的代码就不会检查整个数组。 return, 检查周期已完成。
您只需检查第一个值,只需第一个含义即可。
AND, 在循环公布后,您有一个逗号 for, 还有什么造成问题
董宝中
赞同来自:
检查边界条件
&
二哥
赞同来自:
a[i+1]
, 因为此值可能会或不能留下阵列。
例如:
要修复它,请提前停止循环。
快网
赞同来自:
董宝中
赞同来自:
此功能检查数组是否按升序顺序。
冰洋
赞同来自:
窦买办
赞同来自:
三叔
赞同来自:
小姐请别说爱
赞同来自:
方法
every//
检查所提供的函数是否实现的测试数组的所有元素。